diff --git a/Command.cpp b/Command.cpp index ad83ac5..549da7e 100644 --- a/Command.cpp +++ b/Command.cpp @@ -3,7 +3,9 @@ namespace core { - int Command::processCommand(std::string request, TCPSession *session, std::stringstream &data) {} + int Command::processCommand(std::string request, TCPSession *session, std::stringstream &data) { + return 0; + } void Command::output(Session *session) {} diff --git a/CommandList.cpp b/CommandList.cpp index 434a2a0..451a517 100644 --- a/CommandList.cpp +++ b/CommandList.cpp @@ -32,6 +32,7 @@ namespace core { bool CommandList::grabInput(TCPSession *session, Command &command) { session->grab = &command; + return true; } void CommandList::clearGrab(TCPSession *session) { @@ -41,9 +42,8 @@ namespace core { int CommandList::processCommand(std::string request, TCPSession *session, std::stringstream &data) { for(Command *command : commands) data << command->getName() << std::endl; + return true; } - - } diff --git a/ConsoleServer.cpp b/ConsoleServer.cpp index e85eaf3..68a46c3 100644 --- a/ConsoleServer.cpp +++ b/ConsoleServer.cpp @@ -5,7 +5,7 @@ namespace core { - ConsoleServer::ConsoleServer(EPoll &ePoll, IPAddress address) : TLSServer(ePoll, address) { + ConsoleServer::ConsoleServer(EPoll &ePoll, IPAddress address) : TCPServer(ePoll, address, "Console") { coreutils::Log(this); } diff --git a/ConsoleServer.h b/ConsoleServer.h index b84fa35..83349ad 100644 --- a/ConsoleServer.h +++ b/ConsoleServer.h @@ -16,7 +16,7 @@ namespace core { /// /// - class ConsoleServer : public TLSServer, public coreutils::LogListener { + class ConsoleServer : public TCPServer, public coreutils::LogListener { public: diff --git a/ConsoleSession.cpp b/ConsoleSession.cpp index 8a5d3e0..4a9b869 100644 --- a/ConsoleSession.cpp +++ b/ConsoleSession.cpp @@ -9,8 +9,9 @@ namespace core { ConsoleSession::~ConsoleSession() {} - void ConsoleSession::protocol(std::stringstream &out, std::string data = "") { - + void ConsoleSession::protocol(std::string data = "") { + + coreutils::Log(coreutils::LOG_DEBUG_1) << "ConsoleSession protocol " << status; switch (status) { case WELCOME: @@ -23,7 +24,7 @@ namespace core { setCursorLocation(2, 1); setBackColor(BG_BLACK); status = LOGIN; - protocol(out); + protocol(); break; case LOGIN: @@ -34,7 +35,7 @@ namespace core { case WAIT_USER_PROFILE: status = PASSWORD; - protocol(out); + protocol(); break; case PASSWORD: @@ -54,7 +55,7 @@ namespace core { setBackColor(BG_BLACK); scrollArea(2, 16); status = PROMPT; - protocol(out); + protocol(); break; case PROMPT: @@ -68,13 +69,13 @@ namespace core { command = std::string(data); command.erase(command.find_last_not_of("\r\n\t") + 1); status = PROCESS; - protocol(out); + protocol(); break; case PROCESS: doCommand(command); status = (command == "exit")? DONE: PROMPT; - protocol(out); + protocol(); break; case DONE: @@ -91,17 +92,16 @@ namespace core { saveCursor(); setCursorLocation(16, 1); restoreCursor(); - send(data); + send(); } void ConsoleSession::doCommand(std::string request) { saveCursor(); setCursorLocation(16, 1); - std::stringstream out; out << "--> " << request << std::endl; server.commands.processRequest(request, this, out); restoreCursor(); - send(out.str()); + send(); } } diff --git a/ConsoleSession.h b/ConsoleSession.h index 6bb7683..d0202b2 100644 --- a/ConsoleSession.h +++ b/ConsoleSession.h @@ -24,7 +24,7 @@ namespace core { void writeLog(std::string data); protected: - void protocol(std::stringstream &out, std::string data) override; + void protocol(std::string data) override; private: enum Status {WELCOME, LOGIN, WAIT_USER_PROFILE, PASSWORD, WAIT_PASSWORD, PROMPT, INPUT, PROCESS, DONE}; diff --git a/EPoll.cpp b/EPoll.cpp index 5ec15bc..d778e3b 100644 --- a/EPoll.cpp +++ b/EPoll.cpp @@ -69,17 +69,14 @@ namespace core { } bool EPoll::registerSocket(Socket *socket) { - coreutils::Log(coreutils::LOG_DEBUG_2) << "0001-" << socket->getDescriptor(); + lock.lock(); std::map::iterator temp = sockets.find(socket->getDescriptor()); - coreutils::Log(coreutils::LOG_DEBUG_2) << "0002-" << socket->getDescriptor(); if(temp != sockets.end()) throw coreutils::Exception("Attempt to register socket that is already registered."); - coreutils::Log(coreutils::LOG_DEBUG_2) << "0003-" << socket->getDescriptor(); coreutils::Log(coreutils::LOG_DEBUG_3) << "Registering socket " << socket->getDescriptor() << "."; sockets.insert(std::pair(socket->getDescriptor(), socket)); - coreutils::Log(coreutils::LOG_DEBUG_2) << "0004-" << socket->getDescriptor(); enableSocket(socket); - coreutils::Log(coreutils::LOG_DEBUG_2) << "0005-" << socket->getDescriptor(); + lock.unlock(); return true; } @@ -95,17 +92,16 @@ namespace core { return true; } - void EPoll::eventReceived(struct epoll_event event) { + void EPoll::eventReceived(struct epoll_event event, pid_t threadId) { + lock.lock(); std::map::iterator socket = sockets.find(event.data.fd); + lock.unlock(); if(socket != sockets.end()) { - if(socket->second->eventReceived(event)) { - coreutils::Log(coreutils::LOG_DEBUG_4) << "resetSocket from eventReceived."; - resetSocket(socket->second); - } + if(socket->second->eventReceived(event, threadId)) + resetSocket(socket->second); } else - throw coreutils::Exception("Reference to socket that has no object."); - + throw coreutils::Exception("Reference to socket that has no object."); } int EPoll::getDescriptor() { @@ -119,6 +115,7 @@ namespace core { threadx.output(data); data << "|" << std::endl; } + return 1; } void EPoll::enableSocket(Socket *socket) { @@ -139,8 +136,6 @@ namespace core { } void EPoll::resetSocket(Socket *socket) { - if(!socket->active) - return; coreutils::Log(coreutils::LOG_DEBUG_4) << "ResetSocket " << socket; struct epoll_event event; event.data.fd = socket->getDescriptor(); diff --git a/EPoll.h b/EPoll.h index c23cb01..3bbfbad 100644 --- a/EPoll.h +++ b/EPoll.h @@ -18,7 +18,7 @@ namespace core { /// /// Use this object to establish the basis of working with multiple sockets of all sorts /// using the epoll capabilities of the Linux platform. - /// Socket objects can register with BMAEPoll which will establish a communication mechanism + /// 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 @@ -101,7 +101,7 @@ namespace core { /// Receive the epoll events and dispatch the event to the socket making the request. /// - void eventReceived(struct epoll_event event); ///< Dispatch event to appropriate socket. + void eventReceived(struct epoll_event event, pid_t threadId); ///< Dispatch event to appropriate socket. /// /// The processCommand() method displays the thread array to the requesting console via the diff --git a/IPAddressList.cpp b/IPAddressList.cpp index d13ec16..163cfce 100644 --- a/IPAddressList.cpp +++ b/IPAddressList.cpp @@ -8,12 +8,12 @@ namespace core { return list; } - bool IPAddressList::add(IPAddress ipAddress) { + void IPAddressList::add(IPAddress ipAddress) { list.insert(std::make_pair(ipAddress.getClientAddress(), ipAddress)); } bool IPAddressList::remove(IPAddress ipAddress) { - + return false; } bool IPAddressList::contains(std::string ipAddress) { diff --git a/IPAddressList.h b/IPAddressList.h index 4079fec..0dac766 100644 --- a/IPAddressList.h +++ b/IPAddressList.h @@ -12,7 +12,7 @@ namespace core { IPAddressList(); std::map getList(); - bool add(IPAddress ipAddress); + void add(IPAddress ipAddress); bool remove(IPAddress ipAddress); bool contains(std::string ipAddress); diff --git a/Socket.cpp b/Socket.cpp index 24293e7..df89c8b 100644 --- a/Socket.cpp +++ b/Socket.cpp @@ -5,12 +5,6 @@ namespace core { - Socket::Socket(EPoll &ePoll) : ePoll(ePoll) { - coreutils::Log(coreutils::LOG_DEBUG_2) << "BMASocket object created."; - buffer = (char *)malloc(4096); - length = 4096; - } - Socket::Socket(EPoll &ePoll, std::string text) : ePoll(ePoll), text(text) { coreutils::Log(coreutils::LOG_DEBUG_2) << "BMASocket object created [" << text << "]."; buffer = (char *)malloc(4096); @@ -32,7 +26,7 @@ namespace core { shutdown("Too many files open"); coreutils::Exception("Too many files open. Refusing connection.");; } - socketLock.lock(); + lock.lock(); coreutils::Log(coreutils::LOG_DEBUG_3) << "Descriptor set to " << descriptor << " for Socket."; if(descriptor < 3) throw coreutils::Exception("Descriptor out of range", __FILE__, __LINE__); @@ -40,7 +34,7 @@ namespace core { onRegister(); ePoll.registerSocket(this); onRegistered(); - socketLock.unlock(); + lock.unlock(); } int Socket::getDescriptor() { @@ -48,26 +42,33 @@ namespace core { } void Socket::setBufferSize(int length) { - buffer = (char *)realloc(buffer, length); this->length = length; + buffer = (char *)realloc(buffer, length); } - + + int Socket::getBufferSize() { + return length; + } + void Socket::onRegister() {} void Socket::onRegistered() {} void Socket::onUnregister() {} + + void Socket::onUnregistered() {} - bool Socket::eventReceived(struct epoll_event event) { + bool Socket::eventReceived(struct epoll_event event, int threadId) { coreutils::Log(coreutils::LOG_DEBUG_1) << "eventReceived on " << descriptor << "; shutDown = " << shutDown << "; active = " << active << ";"; - socketLock.lock(); + lock.lock(); if(event.events & EPOLLRDHUP) { coreutils::Log(coreutils::LOG_DEBUG_1) << "start EPOLLRDHUP " << descriptor; readHangup = true; shutdown("hangup received"); + lock.unlock(); return false; } @@ -85,11 +86,12 @@ namespace core { coreutils::Log(coreutils::LOG_DEBUG_1) << "start EPOLLHUP " << descriptor; coreutils::Log(coreutils::LOG_DEBUG_1) << "end shutting down" << descriptor; shutdown(); + lock.unlock(); return false; } coreutils::Log(coreutils::LOG_DEBUG_1) << "end with active = " << active << " on socket " << descriptor; - socketLock.unlock(); + lock.unlock(); return active; } @@ -110,8 +112,10 @@ namespace core { int len; int error = -1; - if((len = ::read(getDescriptor(), buffer, bufferLength)) >= 0) - onDataReceived(buffer, len); + if((len = ::read(getDescriptor(), buffer, bufferLength)) >= 0) { +// coreutils::Log(coreutils::LOG_DEBUG_4) << "data[" << std::string(buffer, bufferLength) << "]"; + onDataReceived(buffer, len); + } else { error = errno; @@ -138,27 +142,27 @@ namespace core { if(shutDown) return; - lock.lock(); if(fifo.size() > 0) { + outlock.lock(); ::write(descriptor, fifo.front().c_str(), fifo.front().length()); fifo.pop(); - coreutils::Log(coreutils::LOG_DEBUG_4) << "reseSocket from writeSocket."; + coreutils::Log(coreutils::LOG_DEBUG_4) << "resetSocket from writeSocket."; if(active) ePoll.resetSocket(this); + outlock.unlock(); } - lock.unlock(); } int Socket::write(std::string data) { if(!active) - return -1; - - lock.lock(); + return -1; + + outlock.lock(); fifo.emplace(data); coreutils::Log(coreutils::LOG_DEBUG_4) << "resetSocket from write. active is " << active; if(active) ePoll.resetSocket(this); - lock.unlock(); + outlock.unlock(); return 1; } diff --git a/Socket.h b/Socket.h index e30c35e..3c3f126 100644 --- a/Socket.h +++ b/Socket.h @@ -18,12 +18,13 @@ namespace core { /// data threading through use of the EPoll object and also provides buffering for output data /// requests to the socket. /// - /// A program using a socket object can request to open a socket (file or network or whatever) and + /// 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. + /// 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. @@ -33,8 +34,19 @@ namespace core { public: - Socket(EPoll &ePoll); - Socket(EPoll &ePoll, std::string text); + /// + /// Constructor + /// + /// @param ePoll The EPoll socket descriptor. + /// @param text A title for this socket. + /// + + Socket(EPoll &ePoll, std::string text = ""); + + /// + /// Destructor + /// + ~Socket(); /// @@ -53,15 +65,6 @@ namespace core { void setDescriptor(int descriptor); /// The descriptor to monitor for this socket. /// /// The event received from epoll is sent through the eventReceived @@ -73,7 +76,7 @@ namespace core { /// simulated. /// - bool eventReceived(struct epoll_event event); ///< Parse epoll event and call specified callbacks. + bool eventReceived(struct epoll_event event, pid_t threadId); ///< Parse epoll event and call specified callbacks. /// /// Write data to the socket. @@ -91,17 +94,19 @@ namespace core { /// descriptor is set using setDescriptor for the socket. /// - virtual void onRegister(); ///< Called when the socket has finished registering with the epoll processing. - virtual void onRegistered(); + virtual void onRegister(); ///< Called before the socket has registered with the epoll processing. + virtual void onRegistered(); ///< Called after the socket has been registered with epoll processing. + + virtual void onUnregister(); /// - /// The onUnregister method is called whenever the socket is unregistered with + /// 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. /// - virtual void onUnregister(); ///< Called when the socket has finished unregistering for the epoll processing. + virtual void onUnregistered(); ///< Called when the socket has finished unregistering for the epoll processing. bool needsToWrite(); @@ -110,11 +115,13 @@ namespace core { protected: EPoll &ePoll; // The EPoll control object. - + bool shutDown = false; void setBufferSize(int length); - + + int getBufferSize(); + /// /// 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 @@ -153,7 +160,7 @@ namespace core { std::string text; int descriptor = -1; std::mutex lock; - std::mutex socketLock; + std::mutex outlock; bool readHangup = false; // struct epoll_event event; // Event selection construction structure. diff --git a/TCPServer.cpp b/TCPServer.cpp index 5100253..1164e46 100644 --- a/TCPServer.cpp +++ b/TCPServer.cpp @@ -23,26 +23,28 @@ namespace core { } void TCPServer::onDataReceived(std::string data) { + coreutils::Log(coreutils::LOG_DEBUG_2) << "entering TCPServer::onDataReceived socket " << getDescriptor() << "."; + lock.lock(); TCPSession *session = accept(); - if(session) sessions.push_back(session); + if(session) + sessions.push_back(session); + lock.unlock(); + coreutils::Log(coreutils::LOG_DEBUG_2) << "Leaving TCPServer::onDataReceived socket " << getDescriptor() << "."; } - TCPSession * TCPServer::accept() { + TCPSession * TCPServer::accept() { TCPSession *session = getSocketAccept(ePoll); - session->setDescriptor(::accept(getDescriptor(), (struct sockaddr *)&session->ipAddress.addr, &session->ipAddress.addressLength)); - + session->setDescriptor(::accept(getDescriptor(), (struct sockaddr *)&session->ipAddress.addr, &session->ipAddress.addressLength)); // if(blackList && blackList->contains(session->ipAddress.getClientAddress())) { // session->shutdown(); // Log(LOG_WARN) << "Client at IP address " << session->ipAddress.getClientAddress() << " is blacklisted and was denied a connection."; // return NULL; // } - // // if(whiteList && !whiteList->contains(session->ipAddress.getClientAddress())) { // session->shutdown(); // Log(LOG_WARN) << "Client at IP address " << session->ipAddress.getClientAddress() << " is not authorized and was denied a connection."; // return NULL; // } - // coreutils::Log(coreutils::LOG_DEBUG_2) << "Session started on socket " << session->getDescriptor() << "."; return session; } @@ -65,7 +67,7 @@ namespace core { void TCPServer::output(TCPSession *session) { std::stringstream out; out << "|" << session->ipAddress.getClientAddressAndPort(); - session->send(out.str()); + session->send(); } int TCPServer::processCommand(std::string command, TCPSession *session, std::stringstream &data) { @@ -75,6 +77,7 @@ namespace core { sessionx->output(data); data << "|" << std::endl; } + return 1; } } diff --git a/TCPServer.h b/TCPServer.h index 436c0f1..f4f951e 100644 --- a/TCPServer.h +++ b/TCPServer.h @@ -114,6 +114,7 @@ namespace core { private: TCPSession * accept(); + std::mutex lock; }; diff --git a/TCPSession.cpp b/TCPSession.cpp index e608fe7..35f54cd 100644 --- a/TCPSession.cpp +++ b/TCPSession.cpp @@ -5,8 +5,6 @@ namespace core { - TCPSession::TCPSession(EPoll &ePoll, TCPServer &server) : TCPSocket(ePoll), server(server) {} - TCPSession::TCPSession(EPoll &ePoll, TCPServer &server, std::string text) : TCPSocket(ePoll, text), server(server) {} TCPSession::~TCPSession() { @@ -17,45 +15,44 @@ namespace core { data << "|" << ipAddress.getClientAddressAndPort(); } - void TCPSession::protocol(std::stringstream &out, std::string data = "") { + void TCPSession::protocol(std::string data = "") { if(data.length() > 0) { if(!server.commands.processRequest(data, this, out)) server.sessionErrorHandler("Invalid data received.", out); - } - else { - onConnected(out); - } + } } - void TCPSession::onRegister() { - std::stringstream out; - protocol(out); - send(out.str()); + void TCPSession::onRegistered() { + onConnected(); + protocol(); + send(); } - void TCPSession::onConnected(std::stringstream &out) {} + void TCPSession::onConnected() {} void TCPSession::onDataReceived(std::string data) { - std::stringstream out; - protocol(out, data); - send(out.str()); + protocol(data); + send(); } - void TCPSession::sendToAll(std::string data) { + void TCPSession::sendToAll() { for(auto session : server.sessions) if(session != this) - session->write(data); + session->write(out.str()); + out.str(""); } - void TCPSession::sendToAll(SessionFilter filter, std::string data) { + void TCPSession::sendToAll(SessionFilter filter) { for(auto session : server.sessions) if(filter.test(*session)) if(session != this) - session->write(data); + session->write(out.str()); + out.str(""); } - void TCPSession::send(std::string data) { - write(data); + void TCPSession::send() { + write(out.str()); + out.str(""); } } diff --git a/TCPSession.h b/TCPSession.h index abfd349..10fd19a 100644 --- a/TCPSession.h +++ b/TCPSession.h @@ -23,27 +23,32 @@ namespace core { class TCPSession : public TCPSocket { public: - TCPSession(EPoll &ePoll, TCPServer &server); - TCPSession(EPoll &ePoll, TCPServer &server, std::string text); + TCPSession(EPoll &ePoll, TCPServer &server, std::string text = ""); ~TCPSession(); Command *grab = NULL; virtual void output(std::stringstream &data); + + /// + /// Use out to send data to the session socket or other session sockets. + /// + + std::stringstream out; /// /// The send method is used to output the contents of the out stream /// to the session containing the stream. /// - void send(std::string data); + void send(); /// /// Use this sendToAll method to output the contents of the out stream /// to all the connections on the server excluding the sender session. /// - void sendToAll(std::string data); + void sendToAll(); /// /// Use this sendToAll method to output the contents of the out stream @@ -51,14 +56,14 @@ namespace core { /// and the entries identified by the passed in filter object. /// - void sendToAll(SessionFilter filter, std::string data); + void sendToAll(SessionFilter filter); TCPServer &server; protected: virtual void onDataReceived(std::string data) override; - virtual void onRegister() override; + virtual void onRegistered() override; /// /// This method is called from within the protocol method when protocol is called @@ -66,7 +71,7 @@ namespace core { /// to deliver a message to the connection upon connection. /// - virtual void onConnected(std::stringstream &out); + virtual void onConnected(); /// /// Override the protocol method to manage and control the session communications @@ -75,7 +80,7 @@ namespace core { /// processRequest method on the session input. /// - virtual void protocol(std::stringstream &out, std::string data); + virtual void protocol(std::string data); private: diff --git a/TLSSession.cpp b/TLSSession.cpp index c207379..503a24a 100644 --- a/TLSSession.cpp +++ b/TLSSession.cpp @@ -78,13 +78,9 @@ namespace core { } - TLSSession::~TLSSession() { - - } + TLSSession::~TLSSession() {} - void TLSSession::protocol(std::stringstream &out, std::string data) { - - } + void TLSSession::protocol(std::string data) {} void TLSSession::receiveData(char *buffer, int bufferLength) { diff --git a/TLSSession.h b/TLSSession.h index 9a667c8..12da72d 100644 --- a/TLSSession.h +++ b/TLSSession.h @@ -35,7 +35,7 @@ namespace core { /// virtual void output(std::stringstream &out); - virtual void protocol(std::stringstream &out, std::string data) override; + virtual void protocol(std::string data) override; protected: void receiveData(char *buffer, int bufferLength) override; diff --git a/TerminalSession.cpp b/TerminalSession.cpp index 0cc995d..0bd6dbd 100644 --- a/TerminalSession.cpp +++ b/TerminalSession.cpp @@ -2,7 +2,7 @@ namespace core { - TerminalSession::TerminalSession(EPoll &ePoll, TCPServer &server) : TLSSession(ePoll, server) { + TerminalSession::TerminalSession(EPoll &ePoll, TCPServer &server) : TCPSession(ePoll, server) { } TerminalSession::~TerminalSession() { diff --git a/TerminalSession.h b/TerminalSession.h index 3054c56..38daf91 100644 --- a/TerminalSession.h +++ b/TerminalSession.h @@ -27,16 +27,30 @@ namespace core { static const char esc = 0x1b; - class TerminalSession : public TLSSession { + class TerminalSession : public TCPSession { public: TerminalSession(EPoll &ePoll, TCPServer &server); ~TerminalSession(); int getLines(); + + /// + /// Clear the display. + /// void clear(); + + /// + /// Clear the display from the cursor to the end of line. + /// + void clearEOL(); + + /// + /// Set the location of the cursor on the display. + /// + void setCursorLocation(int x, int y); void setColor(int color); void setBackColor(int color); @@ -45,8 +59,6 @@ namespace core { void NextLine(int lines); void PreviousLine(int lines); void scrollArea(int start, int end); - - std::stringstream out; }; diff --git a/Thread.cpp b/Thread.cpp index 88238bc..4a65e09 100644 --- a/Thread.cpp +++ b/Thread.cpp @@ -60,13 +60,13 @@ namespace core { } else if(rc > 0) { for(int ix = 0; ix < rc; ++ix) { ++count; - std::cout << "Event " << events[ix].events << " on socket " << events[ix].data.fd << " on thread " << getThreadId() << ": "; - std::cout << ((events[ix].events & EPOLLIN) ? "EPOLLIN ": ""); - std::cout << ((events[ix].events & EPOLLWRNORM) ? "EPOLLWRNORM ": ""); - std::cout << ((events[ix].events & EPOLLRDHUP) ? "EPOLLRDHUP ": ""); - std::cout << ((events[ix].events & EPOLLHUP) ? "EPOLLHUP ": ""); - std::cout << "." << std::endl; - ePoll.eventReceived(events[ix]); +// std::cout << "Event " << events[ix].events << " on socket " << events[ix].data.fd << " on thread " << getThreadId() << ": "; +// std::cout << ((events[ix].events & EPOLLIN) ? "EPOLLIN ": ""); +// std::cout << ((events[ix].events & EPOLLWRNORM) ? "EPOLLWRNORM ": ""); +// std::cout << ((events[ix].events & EPOLLRDHUP) ? "EPOLLRDHUP ": ""); +// std::cout << ((events[ix].events & EPOLLHUP) ? "EPOLLHUP ": ""); +// std::cout << "." << std::endl; + ePoll.eventReceived(events[ix], threadId); } } } diff --git a/UDPServerSocket.cpp b/UDPServerSocket.cpp index edc0a65..efc9b47 100644 --- a/UDPServerSocket.cpp +++ b/UDPServerSocket.cpp @@ -53,7 +53,8 @@ namespace core { // session->output(data); // data << "|" << std::endl; // } - + + return 1; } } diff --git a/html/CommandList_8h_source.html b/html/CommandList_8h_source.html index 655df2b..168899d 100644 --- a/html/CommandList_8h_source.html +++ b/html/CommandList_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: CommandList.h Source File @@ -29,18 +29,21 @@ - + +/* @license-end */ @@ -62,21 +65,63 @@ $(function() {
CommandList.h
-
1 #ifndef __CommandList_h__
2 #define __CommandList_h__
3 
4 #include "TCPSession.h"
5 #include "Command.h"
6 #include "Log.h"
7 
8 namespace core {
9 
17 
18  class CommandList : public Command {
19 
20  public:
21 
25 
26  void add(Command &command, std::string name = "");
27 
31 
32  void remove(Command &command);
33 
40 
41  bool processRequest(std::string request, TCPSession *session, std::stringstream &data);
42 
48 
49  bool grabInput(TCPSession *session, Command &command);
50 
54 
55  void clearGrab(TCPSession *session);
56 
60 
61  int processCommand(std::string request, TCPSession *session, std::stringstream &data);
62 
63  protected:
64 
68 
69  std::vector<Command *> commands;
70 
71  };
72 
73 }
74 
75 #endif
bool processRequest(std::string request, TCPSession *session, std::stringstream &data)
Definition: CommandList.cpp:15
-
bool grabInput(TCPSession *session, Command &command)
Definition: CommandList.cpp:33
-
Definition: Command.cpp:4
-
Definition: CommandList.h:18
-
Definition: TCPSession.h:23
-
Definition: Command.h:20
-
std::vector< Command * > commands
Definition: CommandList.h:69
-
void add(Command &command, std::string name="")
Definition: CommandList.cpp:6
-
int processCommand(std::string request, TCPSession *session, std::stringstream &data)
Definition: CommandList.cpp:41
+
1 #ifndef __CommandList_h__
+
2 #define __CommandList_h__
+
3 
+
4 #include "TCPSession.h"
+
5 #include "Command.h"
+
6 #include "Log.h"
+
7 
+
8 namespace core {
+
9 
+
17 
+
18  class CommandList : public Command {
+
19 
+
20  public:
+
21 
+
25 
+
26  void add(Command &command, std::string name = "");
+
27 
+
31 
+
32  void remove(Command &command);
+
33 
+
40 
+
41  bool processRequest(std::string request, TCPSession *session, std::stringstream &data);
+
42 
+
48 
+
49  bool grabInput(TCPSession *session, Command &command);
+
50 
+
54 
+
55  void clearGrab(TCPSession *session);
+
56 
+
60 
+
61  int processCommand(std::string request, TCPSession *session, std::stringstream &data);
+
62 
+
63  protected:
+
64 
+
68 
+
69  std::vector<Command *> commands;
+
70 
+
71  };
+
72 
+
73 }
+
74 
+
75 #endif
+
bool grabInput(TCPSession *session, Command &command)
Definition: CommandList.cpp:33
+
Definition: TCPSession.h:23
+
std::vector< Command * > commands
Definition: CommandList.h:69
+
int processCommand(std::string request, TCPSession *session, std::stringstream &data)
Definition: CommandList.cpp:42
+
void add(Command &command, std::string name="")
Definition: CommandList.cpp:6
+
void remove(Command &command)
Definition: CommandList.cpp:11
+
Definition: Command.h:20
+
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 index 04c9209..79de7f5 100644 --- a/html/Command_8h_source.html +++ b/html/Command_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: Command.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,20 +65,58 @@ $(function() {
Command.h
-
1 #ifndef __Command_h__
2 #define __Command_h__
3 
4 #include "includes"
5 #include "Object.h"
6 #include "TCPSession.h"
7 #include "PString.h"
8 
9 namespace core {
10 
11  class Session;
12 
19 
20  class Command : public Object {
21 
22  public:
23 
37 
38  virtual bool check(std::string request);
39 
50 
51  virtual int processCommand(std::string request, TCPSession *session, std::stringstream &data);
52 
58 
59  virtual void output(Session *session);
60 
69 
70  void setName(std::string name);
71 
72  std::string getName();
73 
74  private:
75  std::string name;
76 
77  };
78 
79 }
80 
81 #endif
Definition: Command.cpp:4
-
Definition: Object.h:8
-
Definition: TCPSession.h:23
-
void setName(std::string name)
Definition: Command.cpp:18
-
Definition: Command.h:20
-
virtual void output(Session *session)
Definition: Command.cpp:8
-
virtual int processCommand(std::string request, TCPSession *session, std::stringstream &data)
Definition: Command.cpp:6
-
virtual bool check(std::string request)
Definition: Command.cpp:10
+
1 #ifndef __Command_h__
+
2 #define __Command_h__
+
3 
+
4 #include "includes"
+
5 #include "Object.h"
+
6 #include "TCPSession.h"
+
7 #include "PString.h"
+
8 
+
9 namespace core {
+
10 
+
11  class Session;
+
12 
+
19 
+
20  class Command : public Object {
+
21 
+
22  public:
+
23 
+
37 
+
38  virtual bool check(std::string request);
+
39 
+
50 
+
51  virtual int processCommand(std::string request, TCPSession *session, std::stringstream &data);
+
52 
+
58 
+
59  virtual void output(Session *session);
+
60 
+
69 
+
70  void setName(std::string name);
+
71 
+
72  std::string getName();
+
73 
+
74  private:
+
75  std::string name;
+
76 
+
77  };
+
78 
+
79 }
+
80 
+
81 #endif
+
Definition: TCPSession.h:23
+
virtual bool check(std::string request)
Definition: Command.cpp:12
+
virtual void output(Session *session)
Definition: Command.cpp:10
+
Definition: Command.h:20
+
virtual int processCommand(std::string request, TCPSession *session, std::stringstream &data)
Definition: Command.cpp:6
+
Definition: Object.h:8
+
void setName(std::string name)
Definition: Command.cpp:20
diff --git a/html/ConsoleServer_8h_source.html b/html/ConsoleServer_8h_source.html index 4524d34..b5e3b54 100644 --- a/html/ConsoleServer_8h_source.html +++ b/html/ConsoleServer_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: ConsoleServer.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,19 +65,56 @@ $(function() {
ConsoleServer.h
-
1 #ifndef __ConsoleServer_h__
2 #define __ConsoleServer_h__
3 
4 #include "includes"
5 #include "TLSServer.h"
6 #include "Command.h"
7 #include "EPoll.h"
8 #include "LogListener.h"
9 
10 namespace core {
11 
12  class TCPSocket;
13  class TCPSession;
14 
18 
19  class ConsoleServer : public TLSServer, public coreutils::LogListener {
20 
21  public:
22 
23  //
24  //
25  //
26 
27  ConsoleServer(EPoll &ePoll, IPAddress address);
28 
29  //
30  //
31  //
32 
33  void logSend(std::string out) override;
34 
35  TCPSession * getSocketAccept(EPoll &ePoll) override;
36 
37  };
38 
39 }
40 
41 #endif
Definition: TLSServer.h:19
-
Definition: Command.cpp:4
-
Definition: EPoll.h:31
-
Definition: IPAddress.h:9
-
Definition: TCPSession.h:23
-
TCPSession * getSocketAccept(EPoll &ePoll) override
Definition: ConsoleServer.cpp:17
-
Definition: ConsoleServer.h:19
+
1 #ifndef __ConsoleServer_h__
+
2 #define __ConsoleServer_h__
+
3 
+
4 #include "includes"
+
5 #include "TLSServer.h"
+
6 #include "Command.h"
+
7 #include "EPoll.h"
+
8 #include "LogListener.h"
+
9 
+
10 namespace core {
+
11 
+
12  class TCPSocket;
+
13  class TCPSession;
+
14 
+
18 
+
19  class ConsoleServer : public TCPServer, public coreutils::LogListener {
+
20 
+
21  public:
+
22 
+
23  //
+
24  //
+
25  //
+
26 
+
27  ConsoleServer(EPoll &ePoll, IPAddress address);
+
28 
+
29  //
+
30  //
+
31  //
+
32 
+
33  void logSend(std::string out) override;
+
34 
+
35  TCPSession * getSocketAccept(EPoll &ePoll) override;
+
36 
+
37  };
+
38 
+
39 }
+
40 
+
41 #endif
+
Definition: TCPSession.h:23
+
Definition: IPAddress.h:9
+
Definition: EPoll.h:31
+
Definition: ConsoleServer.h:19
+
Definition: TCPServer.h:24
+
TCPSession * getSocketAccept(EPoll &ePoll) override
Definition: ConsoleServer.cpp:17
diff --git a/html/ConsoleSession_8h_source.html b/html/ConsoleSession_8h_source.html index 6c13fd4..89115e5 100644 --- a/html/ConsoleSession_8h_source.html +++ b/html/ConsoleSession_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: ConsoleSession.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,18 +65,49 @@ $(function() {
ConsoleSession.h
-
1 #ifndef __ConsoleSession_h__
2 #define __ConsoleSession_h__
3 
4 #include "TerminalSession.h"
5 #include "TCPSession.h"
6 #include "CommandList.h"
7 
8 namespace core {
9 
17 
19 
20  public:
21  ConsoleSession(EPoll &ePoll, TCPServer &server);
22  ~ConsoleSession();
23 
24  void writeLog(std::string data);
25 
26  protected:
27  void protocol(std::stringstream &out, std::string data) override;
28 
29  private:
30  enum Status {WELCOME, LOGIN, WAIT_USER_PROFILE, PASSWORD, WAIT_PASSWORD, PROMPT, INPUT, PROCESS, DONE};
31  Status status = WELCOME;
32  void doCommand(std::string request);
33  std::string command;
34 
35  };
36 
37 }
38 
39 #endif
Definition: ConsoleSession.h:18
-
Definition: Command.cpp:4
-
Definition: EPoll.h:31
-
void protocol(std::stringstream &out, std::string data) override
Definition: ConsoleSession.cpp:12
-
Definition: TCPServer.h:24
-
Definition: TerminalSession.h:30
+
1 #ifndef __ConsoleSession_h__
+
2 #define __ConsoleSession_h__
+
3 
+
4 #include "TerminalSession.h"
+
5 #include "TCPSession.h"
+
6 #include "CommandList.h"
+
7 
+
8 namespace core {
+
9 
+
17 
+ +
19 
+
20  public:
+
21  ConsoleSession(EPoll &ePoll, TCPServer &server);
+
22  ~ConsoleSession();
+
23 
+
24  void writeLog(std::string data);
+
25 
+
26  protected:
+
27  void protocol(std::string data) override;
+
28 
+
29  private:
+
30  enum Status {WELCOME, LOGIN, WAIT_USER_PROFILE, PASSWORD, WAIT_PASSWORD, PROMPT, INPUT, PROCESS, DONE};
+
31  Status status = WELCOME;
+
32  void doCommand(std::string request);
+
33  std::string command;
+
34 
+
35  };
+
36 
+
37 }
+
38 
+
39 #endif
+
Definition: EPoll.h:31
+
Definition: ConsoleSession.h:18
+
void protocol(std::string data) override
Definition: ConsoleSession.cpp:12
+
Definition: TCPServer.h:24
+
Definition: TerminalSession.h:30
diff --git a/html/EPoll_8h_source.html b/html/EPoll_8h_source.html index 3d3b853..85e177b 100644 --- a/html/EPoll_8h_source.html +++ b/html/EPoll_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: EPoll.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,28 +65,95 @@ $(function() {
EPoll.h
-
1 #ifndef __EPoll_h__
2 #define __EPoll_h__
3 
4 #include "Log.h"
5 #include "Socket.h"
6 #include "Thread.h"
7 #include "TCPSession.h"
8 #include "Command.h"
9 
10 namespace core {
11 
30 
31  class EPoll : public Command {
32 
33  public:
34 
38 
39  EPoll();
40 
44 
45  ~EPoll();
46 
53 
54  bool start(int numberOfThreads, int maxSockets);
55 
61 
62  bool stop();
63 
68 
69  bool isStopping();
70 
79 
80  bool registerSocket(Socket *socket);
81 
85 
86  bool unregisterSocket(Socket *socket);
87 
91 
92  int getDescriptor();
93 
97 
98  int maxSockets;
99 
103 
104  void eventReceived(struct epoll_event event);
105 
112 
113  int processCommand(std::string command, TCPSession *session, std::stringstream &data) override;
114 
115  void resetSocket(Socket *socket);
116 
117  private:
118 
119  int epfd;
120  int numberOfThreads;
121  std::map<int, Socket *> sockets;
122  std::vector<Thread> threads;
123  volatile bool terminateThreads;
124  std::mutex lock;
125  void enableSocket(Socket *socket);
126  void disableSocket(Socket *socket);
127 
128  };
129 
130 }
131 
132 #endif
133 
void eventReceived(struct epoll_event event)
Dispatch event to appropriate socket.
Definition: EPoll.cpp:98
-
int processCommand(std::string command, TCPSession *session, std::stringstream &data) override
Output the threads array to the console.
Definition: EPoll.cpp:115
-
Definition: Command.cpp:4
-
Definition: EPoll.h:31
-
Definition: Socket.h:32
-
~EPoll()
Definition: EPoll.cpp:17
-
Definition: TCPSession.h:23
-
bool registerSocket(Socket *socket)
Register a BMASocket for monitoring by BMAEPoll.
Definition: EPoll.cpp:71
-
bool stop()
Stop and shut down the BMAEPoll processing.
Definition: EPoll.cpp:47
-
EPoll()
Definition: EPoll.cpp:8
-
bool start(int numberOfThreads, int maxSockets)
Start the BMAEPoll processing.
Definition: EPoll.cpp:21
-
Definition: Command.h:20
-
bool unregisterSocket(Socket *socket)
Unregister a BMASocket from monitoring by BMAEPoll.
Definition: EPoll.cpp:86
-
int maxSockets
The maximum number of socket allowed.
Definition: EPoll.h:98
-
bool isStopping()
Returns a true if the stop command has been requested.
Definition: EPoll.cpp:67
-
int getDescriptor()
Return the descriptor for the ePoll socket.
Definition: EPoll.cpp:111
+
1 #ifndef __EPoll_h__
+
2 #define __EPoll_h__
+
3 
+
4 #include "Log.h"
+
5 #include "Socket.h"
+
6 #include "Thread.h"
+
7 #include "TCPSession.h"
+
8 #include "Command.h"
+
9 
+
10 namespace core {
+
11 
+
30 
+
31  class EPoll : public Command {
+
32 
+
33  public:
+
34 
+
38 
+
39  EPoll();
+
40 
+
44 
+
45  ~EPoll();
+
46 
+
53 
+
54  bool start(int numberOfThreads, int maxSockets);
+
55 
+
61 
+
62  bool stop();
+
63 
+
68 
+
69  bool isStopping();
+
70 
+
79 
+
80  bool registerSocket(Socket *socket);
+
81 
+
85 
+
86  bool unregisterSocket(Socket *socket);
+
87 
+
91 
+
92  int getDescriptor();
+
93 
+
97 
+
98  int maxSockets;
+
99 
+
103 
+
104  void eventReceived(struct epoll_event event, pid_t threadId);
+
105 
+
112 
+
113  int processCommand(std::string command, TCPSession *session, std::stringstream &data) override;
+
114 
+
115  void resetSocket(Socket *socket);
+
116 
+
117  private:
+
118 
+
119  int epfd;
+
120  int numberOfThreads;
+
121  std::map<int, Socket *> sockets;
+
122  std::vector<Thread> threads;
+
123  volatile bool terminateThreads;
+
124  std::mutex lock;
+
125  void enableSocket(Socket *socket);
+
126  void disableSocket(Socket *socket);
+
127 
+
128  };
+
129 
+
130 }
+
131 
+
132 #endif
+
133 
+
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:23
+
Definition: Socket.h:33
+
bool unregisterSocket(Socket *socket)
Unregister a BMASocket from monitoring by BMAEPoll.
Definition: EPoll.cpp:83
+
Definition: EPoll.h:31
+
bool stop()
Stop and shut down the BMAEPoll processing.
Definition: EPoll.cpp:47
+
void eventReceived(struct epoll_event event, pid_t threadId)
Dispatch event to appropriate socket.
Definition: EPoll.cpp:95
+
int maxSockets
The maximum number of socket allowed.
Definition: EPoll.h:98
+
Definition: Command.h:20
+
int getDescriptor()
Return the descriptor for the ePoll socket.
Definition: EPoll.cpp:107
+
int processCommand(std::string command, TCPSession *session, std::stringstream &data) override
Output the threads array to the console.
Definition: EPoll.cpp:111
+
~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 index b0d8ba4..8f7a20c 100644 --- a/html/INotify_8h_source.html +++ b/html/INotify_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: INotify.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,16 +65,52 @@ $(function() {
INotify.h
-
1 #ifndef __INotify_h__
2 # define __INotify_h__
3 
4 #include "includes"
5 #include "Socket.h"
6 
7 namespace core {
8 
9  class INotify : Socket {
10 
11  public:
12  INotify(EPoll &ePoll);
13  ~INotify();
14 
15  int addWatch(std::string watch);
16  void removeWatch(int wd);
17 
18  void onDataReceived(char *buffer, int len) override;
19 
20  virtual void inAccess(std::string name) {}
21  virtual void inAttrib(std::string name) {}
22  virtual void inCloseWrite(std::string name) {}
23  virtual void inCloseNoWrite(std::string name) {}
24  virtual void inCreate(std::string name) {}
25  virtual void inDelete(std::string name) {}
26  virtual void inDeleteSelf(std::string name) {}
27  virtual void inModify(std::string name) {}
28  virtual void inMoveSelf(std::string name) {}
29  virtual void inMovedFrom(std::string name) {}
30  virtual void inMovedTo(std::string name) {}
31  virtual void inOpen(std::string name) {}
32 
33  };
34 
35 }
36 
37 #endif
Definition: Command.cpp:4
-
Definition: EPoll.h:31
-
Definition: Socket.h:32
-
Definition: INotify.h:9
+
1 #ifndef __INotify_h__
+
2 # define __INotify_h__
+
3 
+
4 #include "includes"
+
5 #include "Socket.h"
+
6 
+
7 namespace core {
+
8 
+
9  class INotify : Socket {
+
10 
+
11  public:
+
12  INotify(EPoll &ePoll);
+
13  ~INotify();
+
14 
+
15  int addWatch(std::string watch);
+
16  void removeWatch(int wd);
+
17 
+
18  void onDataReceived(char *buffer, int len) override;
+
19 
+
20  virtual void inAccess(std::string name) {}
+
21  virtual void inAttrib(std::string name) {}
+
22  virtual void inCloseWrite(std::string name) {}
+
23  virtual void inCloseNoWrite(std::string name) {}
+
24  virtual void inCreate(std::string name) {}
+
25  virtual void inDelete(std::string name) {}
+
26  virtual void inDeleteSelf(std::string name) {}
+
27  virtual void inModify(std::string name) {}
+
28  virtual void inMoveSelf(std::string name) {}
+
29  virtual void inMovedFrom(std::string name) {}
+
30  virtual void inMovedTo(std::string name) {}
+
31  virtual void inOpen(std::string name) {}
+
32 
+
33  };
+
34 
+
35 }
+
36 
+
37 #endif
+
Definition: Socket.h:33
+
Definition: EPoll.h:31
+
Definition: INotify.h:9
diff --git a/html/IPAddressList_8h_source.html b/html/IPAddressList_8h_source.html index 30c8efd..87697f0 100644 --- a/html/IPAddressList_8h_source.html +++ b/html/IPAddressList_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: IPAddressList.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,15 +65,40 @@ $(function() {
IPAddressList.h
-
1 #ifndef __IPAddressList_h__
2 #define __IPAddressList_h__
3 
4 #include "includes"
5 #include "IPAddress.h"
6 
7 namespace core {
8 
9  class IPAddressList {
10 
11  public:
12  IPAddressList();
13 
14  std::map<std::string, IPAddress> getList();
15  bool add(IPAddress ipAddress);
16  bool remove(IPAddress ipAddress);
17  bool contains(std::string ipAddress);
18 
19  private:
20  std::map<std::string, IPAddress> list;
21  std::map<std::string, IPAddress>::iterator it = list.begin();
22  };
23 
24 }
25 
26 #endif
Definition: Command.cpp:4
-
Definition: IPAddress.h:9
-
Definition: IPAddressList.h:9
+
1 #ifndef __IPAddressList_h__
+
2 #define __IPAddressList_h__
+
3 
+
4 #include "includes"
+
5 #include "IPAddress.h"
+
6 
+
7 namespace core {
+
8 
+
9  class IPAddressList {
+
10 
+
11  public:
+
12  IPAddressList();
+
13 
+
14  std::map<std::string, IPAddress> getList();
+
15  void add(IPAddress ipAddress);
+
16  bool remove(IPAddress ipAddress);
+
17  bool contains(std::string ipAddress);
+
18 
+
19  private:
+
20  std::map<std::string, IPAddress> list;
+
21  std::map<std::string, IPAddress>::iterator it = list.begin();
+
22  };
+
23 
+
24 }
+
25 
+
26 #endif
+
Definition: IPAddress.h:9
+
Definition: IPAddressList.h:9
diff --git a/html/IPAddress_8h_source.html b/html/IPAddress_8h_source.html index 7d4c6f4..81f1f45 100644 --- a/html/IPAddress_8h_source.html +++ b/html/IPAddress_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: IPAddress.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,18 +65,46 @@ $(function() {
IPAddress.h
-
1 #ifndef __IPAddress_h__
2 #define __IPAddress_h__
3 
4 #include "includes"
5 #include "Object.h"
6 
7 namespace core {
8 
9  class IPAddress : public Object {
10 
11  public:
12  IPAddress();
13  IPAddress(std::string address);
14  IPAddress(std::string address, int port);
15  ~IPAddress();
16 
17  struct sockaddr_in addr;
18  socklen_t addressLength;
19 
20  struct sockaddr * getPointer();
21  std::string getClientAddress();
22  std::string getClientAddressAndPort();
23  int getClientPort();
24 
25  };
26 
27 }
28 
29 #endif
Definition: Command.cpp:4
-
std::string getClientAddress()
Get the client network address as xxx.xxx.xxx.xxx.
Definition: IPAddress.cpp:35
-
Definition: IPAddress.h:9
-
Definition: Object.h:8
-
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
+
1 #ifndef __IPAddress_h__
+
2 #define __IPAddress_h__
+
3 
+
4 #include "includes"
+
5 #include "Object.h"
+
6 
+
7 namespace core {
+
8 
+
9  class IPAddress : public Object {
+
10 
+
11  public:
+
12  IPAddress();
+
13  IPAddress(std::string address);
+
14  IPAddress(std::string address, int port);
+
15  ~IPAddress();
+
16 
+
17  struct sockaddr_in addr;
+
18  socklen_t addressLength;
+
19 
+
20  struct sockaddr * getPointer();
+
21  std::string getClientAddress();
+
22  std::string getClientAddressAndPort();
+
23  int getClientPort();
+
24 
+
25  };
+
26 
+
27 }
+
28 
+
29 #endif
+
std::string getClientAddress()
Get the client network address as xxx.xxx.xxx.xxx.
Definition: IPAddress.cpp:35
+
Definition: IPAddress.h:9
+
int getClientPort()
Get the client network port number.
Definition: IPAddress.cpp:47
+
Definition: Object.h:8
+
std::string getClientAddressAndPort()
Get the client network address and port as xxx.xxx.xxx.xxx:ppppp.
Definition: IPAddress.cpp:40
diff --git a/html/Object_8h_source.html b/html/Object_8h_source.html index f27335a..b001c78 100644 --- a/html/Object_8h_source.html +++ b/html/Object_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: Object.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,14 +65,32 @@ $(function() {
Object.h
-
1 #ifndef __Object_h__
2 #define __Object_h__
3 
4 #include "includes"
5 
6 namespace core {
7 
8  class Object {
9 
10  public:
11 
12  std::string name;
13  std::string tag;
14 
15  };
16 
17 }
18 
19 #endif
Definition: Command.cpp:4
-
Definition: Object.h:8
+
1 #ifndef __Object_h__
+
2 #define __Object_h__
+
3 
+
4 #include "includes"
+
5 
+
6 namespace core {
+
7 
+
8  class Object {
+
9 
+
10  public:
+
11 
+
12  std::string name;
+
13  std::string tag;
+
14 
+
15  };
+
16 
+
17 }
+
18 
+
19 #endif
+
Definition: Object.h:8
diff --git a/html/SessionFilter_8h_source.html b/html/SessionFilter_8h_source.html index 1a5fad0..aa6f270 100644 --- a/html/SessionFilter_8h_source.html +++ b/html/SessionFilter_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: SessionFilter.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,16 +65,36 @@ $(function() {
SessionFilter.h
-
1 #ifndef __SessionFilter_h__
2 #define __SessionFilter_h__
3 
4 //#include "Session.h"
5 
6 namespace core {
7 
8  class TCPSession;
9 
10  class SessionFilter : public Object {
11 
12  public:
13  virtual bool test(TCPSession &session) {
14  return true;
15  }
16 
17  };
18 
19 }
20 
21 #endif
Definition: SessionFilter.h:10
-
Definition: Command.cpp:4
-
Definition: Object.h:8
-
Definition: TCPSession.h:23
+
1 #ifndef __SessionFilter_h__
+
2 #define __SessionFilter_h__
+
3 
+
4 //#include "Session.h"
+
5 
+
6 namespace core {
+
7 
+
8  class TCPSession;
+
9 
+
10  class SessionFilter : public Object {
+
11 
+
12  public:
+
13  virtual bool test(TCPSession &session) {
+
14  return true;
+
15  }
+
16 
+
17  };
+
18 
+
19 }
+
20 
+
21 #endif
+
Definition: SessionFilter.h:10
+
Definition: TCPSession.h:23
+
Definition: Object.h:8
diff --git a/html/Socket_8h_source.html b/html/Socket_8h_source.html index 949616a..d236f37 100644 --- a/html/Socket_8h_source.html +++ b/html/Socket_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: Socket.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,25 +65,141 @@ $(function() {
Socket.h
-
1 #ifndef __Socket_h__
2 #define __Socket_h__
3 
4 #include "includes"
5 #include "Object.h"
6 
7 namespace core {
8 
9  class EPoll;
10 
31 
32  class Socket : public core::Object {
33 
34  public:
35 
36  Socket(EPoll &ePoll);
37  Socket(EPoll &ePoll, std::string text);
38  ~Socket();
39 
45 
46  void shutdown(std::string text = "unknown");
47 
52 
53  void setDescriptor(int descriptor);
54 
55  int getDescriptor();
56 
57  class {
58  int value;
59 
60  public:
61  int & operator = (const int &i) { return value = i; }
62  operator int () const { return value; }
63 
64  } bufferSize;
65 
75 
76  bool eventReceived(struct epoll_event event);
77 
81 
82  int write(std::string data);
83  void write(char *buffer, int length);
84 
85  void output(std::stringstream &out);
86 
93 
94  virtual void onRegister();
95  virtual void onRegistered();
96 
103 
104  virtual void onUnregister();
105 
106  bool needsToWrite();
107 
108  bool active = false;
109 
110  protected:
111 
112  EPoll &ePoll; // The EPoll control object.
113 
114  bool shutDown = false;
115 
116  void setBufferSize(int length);
117 
123 
124 // virtual void onConnected(); ///< Called when socket is open and ready to communicate.
125 
129 
130 // virtual void onDisconnected(); ///< Called when socket is closing and no longer ready to communicate.
131 
139 
140  virtual void onDataReceived(std::string data);
141 
142  virtual void onDataReceived(char *buffer, int len);
143 
148 
149  virtual void receiveData(char *buffer, int bufferLength);
150 
151  private:
152 
153  std::string text;
154  int descriptor = -1;
155  std::mutex lock;
156  std::mutex socketLock;
157  bool readHangup = false;
158 
159 // struct epoll_event event; // Event selection construction structure.
160 
161  //-------------------------------------------------------------------------------------
162  // the writeSocket is called when epoll has received a write request for a socket.
163  // Writing data to this socket is queued in the streambuf and permission is requested
164  // to write to the socket. This routine handles the writing of the streambuf data
165  // buffer to the socket.
166  //-------------------------------------------------------------------------------------
167 
168  void writeSocket();
169 
170  // int_type underflow();
171 // int_type uflow();
172 // int_type pbackfail(int_type ch);
173 // streamsize showmanyc();
174 
175  char *buffer; // This is a pointer to the managed buffer space.
176  int length; // This is the length of the buffer.
177 
178 // const char * const begin_;
179 // const char * const end_;
180 // const char * const current_;
181 
182  std::queue<std::string> fifo;
183 
184  };
185 
186 }
187 
188 #endif
189 
Definition: Command.cpp:4
-
Definition: EPoll.h:31
-
Definition: Socket.h:32
-
Definition: Object.h:8
-
virtual void onRegister()
Called when the socket has finished registering with the epoll processing.
Definition: Socket.cpp:57
-
virtual void receiveData(char *buffer, int bufferLength)
Definition: Socket.cpp:107
-
int write(std::string data)
Definition: Socket.cpp:154
-
bool eventReceived(struct epoll_event event)
Parse epoll event and call specified callbacks.
Definition: Socket.cpp:63
-
virtual void onDataReceived(std::string data)
Called when data is received from the socket.
Definition: Socket.cpp:99
-
void setDescriptor(int descriptor)
Set the descriptor for the socket.
Definition: Socket.cpp:32
-
int getDescriptor()
Get the descriptor for the socket.
Definition: Socket.cpp:48
-
virtual void onUnregister()
Called when the socket has finished unregistering for the epoll processing.
Definition: Socket.cpp:61
-
void shutdown(std::string text="unknown")
Definition: Socket.cpp:175
+
1 #ifndef __Socket_h__
+
2 #define __Socket_h__
+
3 
+
4 #include "includes"
+
5 #include "Object.h"
+
6 
+
7 namespace core {
+
8 
+
9  class EPoll;
+
10 
+
32 
+
33  class Socket : public core::Object {
+
34 
+
35  public:
+
36 
+
43 
+
44  Socket(EPoll &ePoll, std::string text = "");
+
45 
+
49 
+
50  ~Socket();
+
51 
+
57 
+
58  void shutdown(std::string text = "unknown");
+
59 
+
64 
+
65  void setDescriptor(int descriptor);
+
66 
+
67  int getDescriptor();
+
68 
+
78 
+
79  bool eventReceived(struct epoll_event event, pid_t threadId);
+
80 
+
84 
+
85  int write(std::string data);
+
86  void write(char *buffer, int length);
+
87 
+
88  void output(std::stringstream &out);
+
89 
+
96 
+
97  virtual void onRegister();
+
98  virtual void onRegistered();
+
99 
+
100  virtual void onUnregister();
+
101 
+
108 
+
109  virtual void onUnregistered();
+
110 
+
111  bool needsToWrite();
+
112 
+
113  bool active = false;
+
114 
+
115  protected:
+
116 
+
117  EPoll &ePoll; // The EPoll control object.
+
118 
+
119  bool shutDown = false;
+
120 
+
121  void setBufferSize(int length);
+
122 
+
123  int getBufferSize();
+
124 
+
130 
+
131 // virtual void onConnected(); ///< Called when socket is open and ready to communicate.
+
132 
+
136 
+
137 // virtual void onDisconnected(); ///< Called when socket is closing and no longer ready to communicate.
+
138 
+
146 
+
147  virtual void onDataReceived(std::string data);
+
148 
+
149  virtual void onDataReceived(char *buffer, int len);
+
150 
+
155 
+
156  virtual void receiveData(char *buffer, int bufferLength);
+
157 
+
158  private:
+
159 
+
160  std::string text;
+
161  int descriptor = -1;
+
162  std::mutex lock;
+
163  std::mutex outlock;
+
164  bool readHangup = false;
+
165 
+
166 // struct epoll_event event; // Event selection construction structure.
+
167 
+
168  //-------------------------------------------------------------------------------------
+
169  // the writeSocket is called when epoll has received a write request for a socket.
+
170  // Writing data to this socket is queued in the streambuf and permission is requested
+
171  // to write to the socket. This routine handles the writing of the streambuf data
+
172  // buffer to the socket.
+
173  //-------------------------------------------------------------------------------------
+
174 
+
175  void writeSocket();
+
176 
+
177  // int_type underflow();
+
178 // int_type uflow();
+
179 // int_type pbackfail(int_type ch);
+
180 // streamsize showmanyc();
+
181 
+
182  char *buffer; // This is a pointer to the managed buffer space.
+
183  int length; // This is the length of the buffer.
+
184 
+
185 // const char * const begin_;
+
186 // const char * const end_;
+
187 // const char * const current_;
+
188 
+
189  std::queue<std::string> fifo;
+
190 
+
191  };
+
192 
+
193 }
+
194 
+
195 #endif
+
196 
+
Definition: Socket.h:33
+
int write(std::string data)
Definition: Socket.cpp:156
+
Definition: EPoll.h:31
+
virtual void onRegistered()
Called after the socket has been registered with epoll processing.
Definition: Socket.cpp:55
+
virtual void onDataReceived(std::string data)
Called when data is received from the socket.
Definition: Socket.cpp:99
+
Socket(EPoll &ePoll, std::string text="")
Definition: Socket.cpp:8
+
bool eventReceived(struct epoll_event event, pid_t threadId)
Parse epoll event and call specified callbacks.
Definition: Socket.cpp:61
+
void shutdown(std::string text="unknown")
Definition: Socket.cpp:177
+
virtual void onRegister()
Called before the socket has registered with the epoll processing.
Definition: Socket.cpp:53
+
virtual void receiveData(char *buffer, int bufferLength)
Definition: Socket.cpp:107
+
virtual void onUnregistered()
Called when the socket has finished unregistering for the epoll processing.
Definition: Socket.cpp:59
+
Definition: Object.h:8
+
int getDescriptor()
Get the descriptor for the socket.
Definition: Socket.cpp:40
+
~Socket()
Definition: Socket.cpp:14
+
void setDescriptor(int descriptor)
Set the descriptor for the socket.
Definition: Socket.cpp:24
diff --git a/html/TCPServer_8h_source.html b/html/TCPServer_8h_source.html index 8277498..eed4790 100644 --- a/html/TCPServer_8h_source.html +++ b/html/TCPServer_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: TCPServer.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,31 +65,91 @@ $(function() {
TCPServer.h
-
1 #ifndef __TCPServer_h__
2 #define __TCPServer_h__
3 
4 #include "Socket.h"
5 #include "TCPSocket.h"
6 #include "IPAddressList.h"
7 #include "Command.h"
8 #include "CommandList.h"
9 
10 namespace core {
11 
23 
24  class TCPServer : public TCPSocket, public Command {
25 
26  public:
27 
37 
38  TCPServer(EPoll &ePoll, IPAddress address, std::string text = "");
39 
43 
44  ~TCPServer();
45 
51 
53 
59 
61 
62  void removeFromSessionList(TCPSession *session);
63 
64  virtual void sessionErrorHandler(std::string errorString, std::stringstream &out);
65 
73 
74  virtual TCPSession * getSocketAccept(EPoll &epoll);
75 
76  void output(TCPSession *session);
77 
81 
82  std::vector<TCPSession *> sessions;
83 
88 
90 
91  protected:
92 
102 
103  void onDataReceived(std::string data) override;
104 
111 
112  int processCommand(std::string command, TCPSession *session, std::stringstream &data) override;
113 
114  private:
115 
116  TCPSession * accept();
117 
118  };
119 
120 }
121 
122 #endif
IPAddressList * blackList
Definition: TCPServer.h:52
-
void onDataReceived(std::string data) override
Definition: TCPServer.cpp:25
-
TCPServer(EPoll &ePoll, IPAddress address, std::string text="")
Definition: TCPServer.cpp:9
-
Definition: Command.cpp:4
-
Definition: EPoll.h:31
-
std::vector< TCPSession * > sessions
Definition: TCPServer.h:82
-
Definition: IPAddress.h:9
-
Definition: CommandList.h:18
-
int processCommand(std::string command, TCPSession *session, std::stringstream &data) override
Definition: TCPServer.cpp:71
-
Definition: TCPSocket.h:20
-
Definition: TCPSession.h:23
-
IPAddressList * whiteList
Definition: TCPServer.h:60
-
Definition: Command.h:20
-
Definition: TCPServer.h:24
-
void output(TCPSession *session)
Output the consoles array to the console.
Definition: TCPServer.cpp:65
-
~TCPServer()
Definition: TCPServer.cpp:20
-
Definition: IPAddressList.h:9
-
CommandList commands
Definition: TCPServer.h:89
-
virtual TCPSession * getSocketAccept(EPoll &epoll)
Definition: TCPServer.cpp:61
+
1 #ifndef __TCPServer_h__
+
2 #define __TCPServer_h__
+
3 
+
4 #include "Socket.h"
+
5 #include "TCPSocket.h"
+
6 #include "IPAddressList.h"
+
7 #include "Command.h"
+
8 #include "CommandList.h"
+
9 
+
10 namespace core {
+
11 
+
23 
+
24  class TCPServer : public TCPSocket, public Command {
+
25 
+
26  public:
+
27 
+
37 
+
38  TCPServer(EPoll &ePoll, IPAddress address, std::string text = "");
+
39 
+
43 
+
44  ~TCPServer();
+
45 
+
51 
+ +
53 
+
59 
+ +
61 
+
62  void removeFromSessionList(TCPSession *session);
+
63 
+
64  virtual void sessionErrorHandler(std::string errorString, std::stringstream &out);
+
65 
+
73 
+
74  virtual TCPSession * getSocketAccept(EPoll &epoll);
+
75 
+
76  void output(TCPSession *session);
+
77 
+
81 
+
82  std::vector<TCPSession *> sessions;
+
83 
+
88 
+ +
90 
+
91  protected:
+
92 
+
102 
+
103  void onDataReceived(std::string data) override;
+
104 
+
111 
+
112  int processCommand(std::string command, TCPSession *session, std::stringstream &data) override;
+
113 
+
114  private:
+
115 
+
116  TCPSession * accept();
+
117  std::mutex lock;
+
118 
+
119  };
+
120 
+
121 }
+
122 
+
123 #endif
+
IPAddressList * blackList
Definition: TCPServer.h:52
+
Definition: TCPSession.h:23
+
Definition: IPAddress.h:9
+
std::vector< TCPSession * > sessions
Definition: TCPServer.h:82
+
int processCommand(std::string command, TCPSession *session, std::stringstream &data) override
Definition: TCPServer.cpp:73
+
void onDataReceived(std::string data) override
Definition: TCPServer.cpp:25
+
TCPServer(EPoll &ePoll, IPAddress address, std::string text="")
Definition: TCPServer.cpp:9
+
Definition: EPoll.h:31
+
Definition: Command.h:20
+
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 index f5b5003..d12dee1 100644 --- a/html/TCPSession_8h_source.html +++ b/html/TCPSession_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: TCPSession.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,26 +65,83 @@ $(function() {
TCPSession.h
-
1 #ifndef __Session_h__
2 #define __Session_h__
3 
4 #include "TCPSocket.h"
5 #include "SessionFilter.h"
6 
7 namespace core {
8 
9  class Command;
10 
11  class TCPServer;
12 
22 
23  class TCPSession : public TCPSocket {
24 
25  public:
26  TCPSession(EPoll &ePoll, TCPServer &server);
27  TCPSession(EPoll &ePoll, TCPServer &server, std::string text);
28  ~TCPSession();
29 
30  Command *grab = NULL;
31 
32  virtual void output(std::stringstream &data);
33 
38 
39  void send(std::string data);
40 
45 
46  void sendToAll(std::string data);
47 
53 
54  void sendToAll(SessionFilter filter, std::string data);
55 
56  TCPServer &server;
57 
58  protected:
59 
60  virtual void onDataReceived(std::string data) override;
61  virtual void onRegister() override;
62 
68 
69  virtual void onConnected(std::stringstream &out);
70 
77 
78  virtual void protocol(std::stringstream &out, std::string data);
79 
80  private:
81 
82  std::mutex mtx;
83 
84  };
85 
86 }
87 
88 #endif
virtual void onDataReceived(std::string data) override
Called when data is received from the socket.
Definition: TCPSession.cpp:38
-
virtual void onConnected(std::stringstream &out)
Definition: TCPSession.cpp:36
-
virtual void onRegister() override
Called when the socket has finished registering with the epoll processing.
Definition: TCPSession.cpp:30
-
Definition: SessionFilter.h:10
-
Definition: Command.cpp:4
-
Definition: EPoll.h:31
-
void sendToAll(std::string data)
Definition: TCPSession.cpp:44
-
Definition: TCPSocket.h:20
-
void send(std::string data)
Definition: TCPSession.cpp:57
-
Definition: TCPSession.h:23
-
Definition: Command.h:20
-
virtual void output(std::stringstream &data)
Definition: TCPSession.cpp:16
-
Definition: TCPServer.h:24
-
virtual void protocol(std::stringstream &out, std::string data)
Definition: TCPSession.cpp:20
+
1 #ifndef __Session_h__
+
2 #define __Session_h__
+
3 
+
4 #include "TCPSocket.h"
+
5 #include "SessionFilter.h"
+
6 
+
7 namespace core {
+
8 
+
9  class Command;
+
10 
+
11  class TCPServer;
+
12 
+
22 
+
23  class TCPSession : public TCPSocket {
+
24 
+
25  public:
+
26  TCPSession(EPoll &ePoll, TCPServer &server, std::string text = "");
+
27  ~TCPSession();
+
28 
+
29  Command *grab = NULL;
+
30 
+
31  virtual void output(std::stringstream &data);
+
32 
+
36 
+
37  std::stringstream out;
+
38 
+
43 
+
44  void send();
+
45 
+
50 
+
51  void sendToAll();
+
52 
+
58 
+
59  void sendToAll(SessionFilter filter);
+
60 
+
61  TCPServer &server;
+
62 
+
63  protected:
+
64 
+
65  virtual void onDataReceived(std::string data) override;
+
66  virtual void onRegistered() override;
+
67 
+
73 
+
74  virtual void onConnected();
+
75 
+
82 
+
83  virtual void protocol(std::string data);
+
84 
+
85  private:
+
86 
+
87  std::mutex mtx;
+
88 
+
89  };
+
90 
+
91 }
+
92 
+
93 #endif
+
void send()
Definition: TCPSession.cpp:53
+
Definition: SessionFilter.h:10
+
Definition: TCPSession.h:23
+
virtual void protocol(std::string data)
Definition: TCPSession.cpp:18
+
Definition: EPoll.h:31
+
void sendToAll()
Definition: TCPSession.cpp:38
+
std::stringstream out
Definition: TCPSession.h:37
+
virtual void onRegistered() override
Called after the socket has been registered with epoll processing.
Definition: TCPSession.cpp:25
+
Definition: Command.h:20
+
Definition: TCPSocket.h:20
+
virtual void onDataReceived(std::string data) override
Called when data is received from the socket.
Definition: TCPSession.cpp:33
+
virtual void output(std::stringstream &data)
Definition: TCPSession.cpp:14
+
virtual void onConnected()
Definition: TCPSession.cpp:31
+
Definition: TCPServer.h:24
diff --git a/html/TCPSocket_8h_source.html b/html/TCPSocket_8h_source.html index 10e54d4..cb17c19 100644 --- a/html/TCPSocket_8h_source.html +++ b/html/TCPSocket_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: TCPSocket.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,18 +65,47 @@ $(function() {
TCPSocket.h
-
1 #ifndef __TCPSocket_h__
2 #define __TCPSocket_h__
3 
4 #include "includes"
5 #include "Socket.h"
6 #include "IPAddress.h"
7 
8 namespace core {
9 
19 
20  class TCPSocket : public Socket {
21 
22  public:
23 
24  TCPSocket(EPoll &ePoll);
25  TCPSocket(EPoll &ePoll, std::string text);
26  ~TCPSocket();
27 
28  void connect(IPAddress &address);
29 
30  IPAddress ipAddress;
31 
38 
39  virtual void output(std::stringstream &out);
40 
41  };
42 
43 }
44 
45 #endif
Definition: Command.cpp:4
-
Definition: EPoll.h:31
-
Definition: IPAddress.h:9
-
Definition: Socket.h:32
-
Definition: TCPSocket.h:20
-
virtual void output(std::stringstream &out)
Definition: TCPSocket.cpp:21
+
1 #ifndef __TCPSocket_h__
+
2 #define __TCPSocket_h__
+
3 
+
4 #include "includes"
+
5 #include "Socket.h"
+
6 #include "IPAddress.h"
+
7 
+
8 namespace core {
+
9 
+
19 
+
20  class TCPSocket : public Socket {
+
21 
+
22  public:
+
23 
+
24  TCPSocket(EPoll &ePoll);
+
25  TCPSocket(EPoll &ePoll, std::string text);
+
26  ~TCPSocket();
+
27 
+
28  void connect(IPAddress &address);
+
29 
+
30  IPAddress ipAddress;
+
31 
+
38 
+
39  virtual void output(std::stringstream &out);
+
40 
+
41  };
+
42 
+
43 }
+
44 
+
45 #endif
+
Definition: IPAddress.h:9
+
Definition: Socket.h:33
+
Definition: EPoll.h:31
+
Definition: TCPSocket.h:20
+
virtual void output(std::stringstream &out)
Definition: TCPSocket.cpp:21
diff --git a/html/TLSServer_8h_source.html b/html/TLSServer_8h_source.html index 5433d93..b4199c6 100644 --- a/html/TLSServer_8h_source.html +++ b/html/TLSServer_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: TLSServer.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,20 +65,56 @@ $(function() {
TLSServer.h
-
1 #ifndef TLSServerSocket_h__
2 #define TLSServerSocket_h__
3 
4 #include "Socket.h"
5 #include "TCPServer.h"
6 #include "Command.h"
7 #include "TCPSession.h"
8 #include "IPAddress.h"
9 
10 namespace core {
11 
18 
19  class TLSServer : public TCPServer {
20 
21  public:
22 
31 
32  TLSServer(EPoll &ePoll, IPAddress address);
33 
37 
38  ~TLSServer();
39 
40  TCPSession * getSocketAccept();
41 
42  SSL_CTX *ctx;
43 
44  private:
45 
46  char *sip_cacert = (char *)"../testkeys/certs/pbxca.crt";
47  char *sip_cert = (char *)"../testkeys/certs/pbxserver.crt";
48  char *sip_key = (char *)"../testkeys/certs/pbxserver.key";
49 
50  };
51 
52 }
53 
54 #endif
Definition: TLSServer.h:19
-
Definition: Command.cpp:4
-
Definition: EPoll.h:31
-
TLSServer(EPoll &ePoll, IPAddress address)
Definition: TLSServer.cpp:22
-
Definition: IPAddress.h:9
-
Definition: TCPSession.h:23
-
~TLSServer()
Definition: TLSServer.cpp:58
-
Definition: TCPServer.h:24
+
1 #ifndef TLSServerSocket_h__
+
2 #define TLSServerSocket_h__
+
3 
+
4 #include "Socket.h"
+
5 #include "TCPServer.h"
+
6 #include "Command.h"
+
7 #include "TCPSession.h"
+
8 #include "IPAddress.h"
+
9 
+
10 namespace core {
+
11 
+
18 
+
19  class TLSServer : public TCPServer {
+
20 
+
21  public:
+
22 
+
31 
+
32  TLSServer(EPoll &ePoll, IPAddress address);
+
33 
+
37 
+
38  ~TLSServer();
+
39 
+
40  TCPSession * getSocketAccept();
+
41 
+
42  SSL_CTX *ctx;
+
43 
+
44  private:
+
45 
+
46  char *sip_cacert = (char *)"../testkeys/certs/pbxca.crt";
+
47  char *sip_cert = (char *)"../testkeys/certs/pbxserver.crt";
+
48  char *sip_key = (char *)"../testkeys/certs/pbxserver.key";
+
49 
+
50  };
+
51 
+
52 }
+
53 
+
54 #endif
+
Definition: TCPSession.h:23
+
Definition: IPAddress.h:9
+
Definition: EPoll.h:31
+
Definition: TLSServer.h:19
+
TLSServer(EPoll &ePoll, IPAddress address)
Definition: TLSServer.cpp:22
+
~TLSServer()
Definition: TLSServer.cpp:58
+
Definition: TCPServer.h:24
diff --git a/html/TLSSession_8h_source.html b/html/TLSSession_8h_source.html index 524e0d5..fa550b3 100644 --- a/html/TLSSession_8h_source.html +++ b/html/TLSSession_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: TLSSession.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,21 +65,60 @@ $(function() {
TLSSession.h
-
1 #ifndef __TLSSession_h__
2 #define __TLSSession_h__
3 
4 #include "includes"
5 #include "TCPSession.h"
6 #include "TLSServer.h"
7 #include <openssl/ssl.h>
8 
9 namespace core {
10 
11  class TLSServer;
12 
22 
23  class TLSSession : public TCPSession {
24 
25  public:
26 
27  TLSSession(EPoll &ePoll, TCPServer &server);
28  ~TLSSession();
29 
36 
37  virtual void output(std::stringstream &out);
38  virtual void protocol(std::stringstream &out, std::string data) override;
39 
40  protected:
41  void receiveData(char *buffer, int bufferLength) override;
42  void onRegister();
43  void onRegistered();
44 
45  private:
46  bool initialized = false;
47  SSL *ssl;
48 
49  };
50 
51 }
52 
53 #endif
Definition: Command.cpp:4
-
Definition: EPoll.h:31
-
virtual void protocol(std::stringstream &out, std::string data) override
Definition: TLSSession.cpp:85
-
Definition: TCPSession.h:23
-
virtual void output(std::stringstream &out)
Definition: TLSSession.cpp:122
-
Definition: TCPServer.h:24
-
Definition: TLSSession.h:23
-
void receiveData(char *buffer, int bufferLength) override
Definition: TLSSession.cpp:89
-
void onRegister()
Called when the socket has finished registering with the epoll processing.
Definition: TLSSession.cpp:36
+
1 #ifndef __TLSSession_h__
+
2 #define __TLSSession_h__
+
3 
+
4 #include "includes"
+
5 #include "TCPSession.h"
+
6 #include "TLSServer.h"
+
7 #include <openssl/ssl.h>
+
8 
+
9 namespace core {
+
10 
+
11  class TLSServer;
+
12 
+
22 
+
23  class TLSSession : public TCPSession {
+
24 
+
25  public:
+
26 
+
27  TLSSession(EPoll &ePoll, TCPServer &server);
+
28  ~TLSSession();
+
29 
+
36 
+
37  virtual void output(std::stringstream &out);
+
38  virtual void protocol(std::string data) override;
+
39 
+
40  protected:
+
41  void receiveData(char *buffer, int bufferLength) override;
+
42  void onRegister();
+
43  void onRegistered();
+
44 
+
45  private:
+
46  bool initialized = false;
+
47  SSL *ssl;
+
48 
+
49  };
+
50 
+
51 }
+
52 
+
53 #endif
+
virtual void protocol(std::string data) override
Definition: TLSSession.cpp:83
+
virtual void output(std::stringstream &out)
Definition: TLSSession.cpp:118
+
Definition: TCPSession.h:23
+
void onRegistered()
Called after the socket has been registered with epoll processing.
Definition: TLSSession.cpp:58
+
Definition: EPoll.h:31
+
std::stringstream out
Definition: TCPSession.h:37
+
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 index 54d2513..9c8d808 100644 --- a/html/TerminalSession_8h_source.html +++ b/html/TerminalSession_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: TerminalSession.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,17 +65,77 @@ $(function() {
TerminalSession.h
-
1 #ifndef __Terminal_h__
2 #define __Terminal_h__
3 
4 #include "includes"
5 #include "TLSSession.h"
6 #include "TCPServer.h"
7 
8 namespace core {
9 
10  static const int FG_BLACK = 30;
11  static const int FG_RED = 31;
12  static const int FG_GREEN = 32;
13  static const int FG_YELLOW = 33;
14  static const int FG_BLUE = 34;
15  static const int FG_MAGENTA = 35;
16  static const int FG_CYAN = 36;
17  static const int FG_WHITE = 37;
18 
19  static const int BG_BLACK = 40;
20  static const int BG_RED = 41;
21  static const int BG_GREEN = 42;
22  static const int BG_YELLOW = 43;
23  static const int BG_BLUE = 44;
24  static const int BG_MAGENTA = 45;
25  static const int BG_CYAN = 46;
26  static const int BG_WHITE = 47;
27 
28  static const char esc = 0x1b;
29 
30  class TerminalSession : public TLSSession {
31 
32  public:
33  TerminalSession(EPoll &ePoll, TCPServer &server);
34  ~TerminalSession();
35 
36  int getLines();
37 
38  void clear();
39  void clearEOL();
40  void setCursorLocation(int x, int y);
41  void setColor(int color);
42  void setBackColor(int color);
43  void saveCursor();
44  void restoreCursor();
45  void NextLine(int lines);
46  void PreviousLine(int lines);
47  void scrollArea(int start, int end);
48 
49  std::stringstream out;
50 
51  };
52 
53 }
54 
55 #endif
Definition: Command.cpp:4
-
Definition: EPoll.h:31
-
Definition: TCPServer.h:24
-
Definition: TerminalSession.h:30
-
Definition: TLSSession.h:23
+
1 #ifndef __Terminal_h__
+
2 #define __Terminal_h__
+
3 
+
4 #include "includes"
+
5 #include "TLSSession.h"
+
6 #include "TCPServer.h"
+
7 
+
8 namespace core {
+
9 
+
10  static const int FG_BLACK = 30;
+
11  static const int FG_RED = 31;
+
12  static const int FG_GREEN = 32;
+
13  static const int FG_YELLOW = 33;
+
14  static const int FG_BLUE = 34;
+
15  static const int FG_MAGENTA = 35;
+
16  static const int FG_CYAN = 36;
+
17  static const int FG_WHITE = 37;
+
18 
+
19  static const int BG_BLACK = 40;
+
20  static const int BG_RED = 41;
+
21  static const int BG_GREEN = 42;
+
22  static const int BG_YELLOW = 43;
+
23  static const int BG_BLUE = 44;
+
24  static const int BG_MAGENTA = 45;
+
25  static const int BG_CYAN = 46;
+
26  static const int BG_WHITE = 47;
+
27 
+
28  static const char esc = 0x1b;
+
29 
+
30  class TerminalSession : public TCPSession {
+
31 
+
32  public:
+
33  TerminalSession(EPoll &ePoll, TCPServer &server);
+
34  ~TerminalSession();
+
35 
+
36  int getLines();
+
37 
+
41 
+
42  void clear();
+
43 
+
47 
+
48  void clearEOL();
+
49 
+
53 
+
54  void setCursorLocation(int x, int y);
+
55  void setColor(int color);
+
56  void setBackColor(int color);
+
57  void saveCursor();
+
58  void restoreCursor();
+
59  void NextLine(int lines);
+
60  void PreviousLine(int lines);
+
61  void scrollArea(int start, int end);
+
62 
+
63  };
+
64 
+
65 }
+
66 
+
67 #endif
+
void clearEOL()
Definition: TerminalSession.cpp:21
+
Definition: TCPSession.h:23
+
void setCursorLocation(int x, int y)
Definition: TerminalSession.cpp:25
+
void clear()
Definition: TerminalSession.cpp:17
+
Definition: EPoll.h:31
+
Definition: TCPServer.h:24
+
Definition: TerminalSession.h:30
diff --git a/html/Thread_8h_source.html b/html/Thread_8h_source.html index 98710a3..002e4c8 100644 --- a/html/Thread_8h_source.html +++ b/html/Thread_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: Thread.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,17 +65,57 @@ $(function() {
Thread.h
-
1 #ifndef __Thread_h__
2 #define __Thread_h__
3 
4 #include "includes"
5 #include "Log.h"
6 #include "Object.h"
7 #include "TCPSession.h"
8 
9 namespace core {
10 
11  class EPoll;
12 
20 
21  class Thread : public Object {
22 
23  public:
24  Thread(EPoll &ePoll);
25  ~Thread();
26 
30 
31  void start();
32  void join();
33  std::string getStatus();
34  pid_t getThreadId();
35  int getCount();
36  void output(std::stringstream &data);
37 
38  private:
39  EPoll &ePoll; // The EPoll control object.
40  std::string status;
41  int count;
42  std::thread *_thread;
43  void print_thread_start_log();
44  pid_t threadId;
45  void run();
46 
47  };
48 
49 }
50 
51 #endif
Definition: Thread.h:21
-
Definition: Command.cpp:4
-
Definition: EPoll.h:31
-
Definition: Object.h:8
-
void start()
Definition: Thread.cpp:10
+
1 #ifndef __Thread_h__
+
2 #define __Thread_h__
+
3 
+
4 #include "includes"
+
5 #include "Log.h"
+
6 #include "Object.h"
+
7 #include "TCPSession.h"
+
8 
+
9 namespace core {
+
10 
+
11  class EPoll;
+
12 
+
20 
+
21  class Thread : public Object {
+
22 
+
23  public:
+
24  Thread(EPoll &ePoll);
+
25  ~Thread();
+
26 
+
30 
+
31  void start();
+
32  void join();
+
33  std::string getStatus();
+
34  pid_t getThreadId();
+
35  int getCount();
+
36  void output(std::stringstream &data);
+
37 
+
38  private:
+
39  EPoll &ePoll; // The EPoll control object.
+
40  std::string status;
+
41  int count;
+
42  std::thread *_thread;
+
43  void print_thread_start_log();
+
44  pid_t threadId;
+
45  void run();
+
46 
+
47  };
+
48 
+
49 }
+
50 
+
51 #endif
+
Definition: EPoll.h:31
+
Definition: Object.h:8
+
void start()
Definition: Thread.cpp:10
+
Definition: Thread.h:21
diff --git a/html/Timer_8h_source.html b/html/Timer_8h_source.html index 50fdcfb..3145e90 100644 --- a/html/Timer_8h_source.html +++ b/html/Timer_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: Timer.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,20 +65,60 @@ $(function() {
Timer.h
-
1 #ifndef __Timer_h__
2 #define __Timer_h__
3 
4 #include "Socket.h"
5 #include "EPoll.h"
6 
7 namespace core {
8 
17 
18  class Timer : Socket {
19 
20  public:
21  Timer(EPoll &ePoll);
22  Timer(EPoll &ePoll, double delay);
23  ~Timer();
24 
32 
33  void setTimer(double delay);
34 
38 
39  void clearTimer();
40 
45 
46  double getElapsed();
47 
48  double getEpoch();
49 
50  protected:
51 
55 
56  virtual void onTimeout() = 0;
57 
58  private:
59  void onDataReceived(std::string data) override;
60  double delayValue;
61 
62  };
63 
64 }
65 
66 #endif
virtual void onTimeout()=0
-
Definition: Command.cpp:4
-
Definition: EPoll.h:31
-
Definition: Socket.h:32
-
void clearTimer()
Definition: Timer.cpp:34
-
void setTimer(double delay)
Definition: Timer.cpp:14
-
double getElapsed()
Definition: Timer.cpp:47
-
Definition: Timer.h:18
+
1 #ifndef __Timer_h__
+
2 #define __Timer_h__
+
3 
+
4 #include "Socket.h"
+
5 #include "EPoll.h"
+
6 
+
7 namespace core {
+
8 
+
17 
+
18  class Timer : Socket {
+
19 
+
20  public:
+
21  Timer(EPoll &ePoll);
+
22  Timer(EPoll &ePoll, double delay);
+
23  ~Timer();
+
24 
+
32 
+
33  void setTimer(double delay);
+
34 
+
38 
+
39  void clearTimer();
+
40 
+
45 
+
46  double getElapsed();
+
47 
+
48  double getEpoch();
+
49 
+
50  protected:
+
51 
+
55 
+
56  virtual void onTimeout() = 0;
+
57 
+
58  private:
+
59  void onDataReceived(std::string data) override;
+
60  double delayValue;
+
61 
+
62  };
+
63 
+
64 }
+
65 
+
66 #endif
+
Definition: Socket.h:33
+
Definition: EPoll.h:31
+
double getElapsed()
Definition: Timer.cpp:47
+
Definition: Timer.h:18
+
void clearTimer()
Definition: Timer.cpp:34
+
virtual void onTimeout()=0
+
void setTimer(double delay)
Definition: Timer.cpp:14
diff --git a/html/UDPServerSocket_8h_source.html b/html/UDPServerSocket_8h_source.html index fd20e68..7a4ba35 100644 --- a/html/UDPServerSocket_8h_source.html +++ b/html/UDPServerSocket_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: UDPServerSocket.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,18 +65,59 @@ $(function() {
UDPServerSocket.h
-
1 #ifndef __UDPServerSocket_h__
2 #define __UDPServerSocket_h__
3 
4 #include "Socket.h"
5 #include "UDPSocket.h"
6 #include "Command.h"
7 
8 namespace core {
9 
16 
17  class UDPServerSocket : public UDPSocket, public Command {
18 
19  public:
20 
21  UDPServerSocket(EPoll &ePoll, std::string url, short int port, std::string commandName);
22  ~UDPServerSocket();
23 
24  protected:
25 
26  //---------------------------------------------------------------
27  // Override the virtual dataReceived since for the server these
28  // are requests to accept the new connection socket.
29  //---------------------------------------------------------------
30 
31  void onDataReceived(std::string data) override;
32 
33  int processCommand(std::string request, std::stringstream &data);
34 
35  //------------------------------------------------------------------------------------
36  // The retrieved socket connections are placed into the client vector list.
37  //------------------------------------------------------------------------------------
38 
39  std::vector<Session *> sessions;
40 
41  private:
42 
43 
44  };
45 
46 }
47 
48 #endif
Definition: Command.cpp:4
-
Definition: EPoll.h:31
-
void onDataReceived(std::string data) override
Called when data is received from the socket.
Definition: UDPServerSocket.cpp:35
-
Definition: UDPServerSocket.h:17
-
Definition: Command.h:20
-
Definition: UDPSocket.h:8
+
1 #ifndef __UDPServerSocket_h__
+
2 #define __UDPServerSocket_h__
+
3 
+
4 #include "Socket.h"
+
5 #include "UDPSocket.h"
+
6 #include "Command.h"
+
7 
+
8 namespace core {
+
9 
+
16 
+
17  class UDPServerSocket : public UDPSocket, public Command {
+
18 
+
19  public:
+
20 
+
21  UDPServerSocket(EPoll &ePoll, std::string url, short int port, std::string commandName);
+
22  ~UDPServerSocket();
+
23 
+
24  protected:
+
25 
+
26  //---------------------------------------------------------------
+
27  // Override the virtual dataReceived since for the server these
+
28  // are requests to accept the new connection socket.
+
29  //---------------------------------------------------------------
+
30 
+
31  void onDataReceived(std::string data) override;
+
32 
+
33  int processCommand(std::string request, std::stringstream &data);
+
34 
+
35  //------------------------------------------------------------------------------------
+
36  // The retrieved socket connections are placed into the client vector list.
+
37  //------------------------------------------------------------------------------------
+
38 
+
39  std::vector<Session *> sessions;
+
40 
+
41  private:
+
42 
+
43 
+
44  };
+
45 
+
46 }
+
47 
+
48 #endif
+
Definition: UDPSocket.h:8
+
Definition: EPoll.h:31
+
void onDataReceived(std::string data) override
Called when data is received from the socket.
Definition: UDPServerSocket.cpp:35
+
Definition: Command.h:20
+
Definition: UDPServerSocket.h:17
diff --git a/html/UDPSocket_8h_source.html b/html/UDPSocket_8h_source.html index 0f04a6d..a1f2f33 100644 --- a/html/UDPSocket_8h_source.html +++ b/html/UDPSocket_8h_source.html @@ -1,9 +1,9 @@ - + - + My Project: UDPSocket.h Source File @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -62,16 +65,36 @@ $(function() {
UDPSocket.h
-
1 #ifndef UDPSocket_h__
2 #define UDPSocket_h__
3 
4 #include "Socket.h"
5 
6 namespace core {
7 
8  class UDPSocket : public Socket {
9 
10  public:
11  UDPSocket(EPoll &ePoll);
12  ~UDPSocket();
13 
14 // virtual int open(string address, short int port);
15 // virtual void write(istream data);
16 
17 };
18 
19 }
20 
21 #endif
Definition: Command.cpp:4
-
Definition: EPoll.h:31
-
Definition: Socket.h:32
-
Definition: UDPSocket.h:8
+
1 #ifndef UDPSocket_h__
+
2 #define UDPSocket_h__
+
3 
+
4 #include "Socket.h"
+
5 
+
6 namespace core {
+
7 
+
8  class UDPSocket : public Socket {
+
9 
+
10  public:
+
11  UDPSocket(EPoll &ePoll);
+
12  ~UDPSocket();
+
13 
+
14 // virtual int open(string address, short int port);
+
15 // virtual void write(istream data);
+
16 
+
17 };
+
18 
+
19 }
+
20 
+
21 #endif
+
Definition: UDPSocket.h:8
+
Definition: Socket.h:33
+
Definition: EPoll.h:31
diff --git a/html/annotated.html b/html/annotated.html index b490d4e..0d26ea2 100644 --- a/html/annotated.html +++ b/html/annotated.html @@ -1,9 +1,9 @@ - + - + My Project: Class List @@ -29,18 +29,21 @@
- + +/* @license-end */ @@ -93,7 +96,7 @@ $(function() { diff --git a/html/classcore_1_1Command-members.html b/html/classcore_1_1Command-members.html index 9060596..6a7b630 100644 --- a/html/classcore_1_1Command-members.html +++ b/html/classcore_1_1Command-members.html @@ -1,9 +1,9 @@ - + - + My Project: Member List @@ -29,18 +29,21 @@ - + +/* @license-end */ - + +/* @license-end */
Inheritance graph
- - - - - - - + + + + + + + +
[legend]
@@ -90,7 +94,8 @@ Collaboration diagram for core::Command:
Collaboration graph
- + +
[legend]
@@ -239,7 +244,7 @@ std::string 
Returns
Returns 0 if execution of the command was successful. Otherwise returns a non-zero value indicating an error condition.
-

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

+

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

@@ -277,7 +282,7 @@ std::string  diff --git a/html/classcore_1_1CommandList-members.html b/html/classcore_1_1CommandList-members.html index d5129f7..829d0f3 100644 --- a/html/classcore_1_1CommandList-members.html +++ b/html/classcore_1_1CommandList-members.html @@ -1,9 +1,9 @@ - + - +My Project: Member List @@ -29,18 +29,21 @@
tag tag
- + +/* @license-end */ - + +/* @license-end */
Inheritance graph
- - + + +
[legend]
@@ -86,8 +90,9 @@ Collaboration diagram for core::CommandList:
Collaboration graph
- - + + +
[legend]
@@ -334,7 +339,7 @@ std::string  diff --git a/html/classcore_1_1CommandList__coll__graph.map b/html/classcore_1_1CommandList__coll__graph.map index e1c01a8..95ab0db 100644 --- a/html/classcore_1_1CommandList__coll__graph.map +++ b/html/classcore_1_1CommandList__coll__graph.map @@ -1,4 +1,5 @@ - - + + + diff --git a/html/classcore_1_1CommandList__coll__graph.md5 b/html/classcore_1_1CommandList__coll__graph.md5 index cd5e62b..685d251 100644 --- a/html/classcore_1_1CommandList__coll__graph.md5 +++ b/html/classcore_1_1CommandList__coll__graph.md5 @@ -1 +1 @@ -251a4f705f19771aaaaf81524803aa62 \ No newline at end of file +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 index b008d27..3fcd20c 100644 Binary files a/html/classcore_1_1CommandList__coll__graph.png 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 index e1c01a8..95ab0db 100644 --- a/html/classcore_1_1CommandList__inherit__graph.map +++ b/html/classcore_1_1CommandList__inherit__graph.map @@ -1,4 +1,5 @@ - - + + + diff --git a/html/classcore_1_1CommandList__inherit__graph.md5 b/html/classcore_1_1CommandList__inherit__graph.md5 index a49ab20..685d251 100644 --- a/html/classcore_1_1CommandList__inherit__graph.md5 +++ b/html/classcore_1_1CommandList__inherit__graph.md5 @@ -1 +1 @@ -92d6283d76fdfbefeb2fa5e34fa6b13f \ No newline at end of file +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 index b008d27..3fcd20c 100644 Binary files a/html/classcore_1_1CommandList__inherit__graph.png 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 index 50507c4..506b8ce 100644 --- a/html/classcore_1_1Command__coll__graph.map +++ b/html/classcore_1_1Command__coll__graph.map @@ -1,3 +1,4 @@ - + + diff --git a/html/classcore_1_1Command__coll__graph.md5 b/html/classcore_1_1Command__coll__graph.md5 index a172a96..d6e49bb 100644 --- a/html/classcore_1_1Command__coll__graph.md5 +++ b/html/classcore_1_1Command__coll__graph.md5 @@ -1 +1 @@ -471dc6f91a8efb50ebaefdef3089f013 \ No newline at end of file +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 index a0d4d94..2ac9789 100644 Binary files a/html/classcore_1_1Command__coll__graph.png 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 index 7f7aeef..9fa46be 100644 --- a/html/classcore_1_1Command__inherit__graph.map +++ b/html/classcore_1_1Command__inherit__graph.map @@ -1,9 +1,10 @@ - - - - - - - + + + + + + + + diff --git a/html/classcore_1_1Command__inherit__graph.md5 b/html/classcore_1_1Command__inherit__graph.md5 index d8100bd..0996b62 100644 --- a/html/classcore_1_1Command__inherit__graph.md5 +++ b/html/classcore_1_1Command__inherit__graph.md5 @@ -1 +1 @@ -0bcaf936db61c2165b3294018e8b79cf \ No newline at end of file +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 index 5513de6..7583341 100644 Binary files a/html/classcore_1_1Command__inherit__graph.png 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 index 01f3174..dc38f98 100644 --- a/html/classcore_1_1ConsoleServer-members.html +++ b/html/classcore_1_1ConsoleServer-members.html @@ -1,9 +1,9 @@ - + - +My Project: Member List @@ -29,18 +29,21 @@
tag
- + +/* @license-end */
active (defined in core::Socket)core::Socket blackListcore::TCPServer - bufferSize (defined in core::Socket)core::Socket - check(std::string request)core::Commandvirtual - commandscore::TCPServer - connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket - ConsoleServer(EPoll &ePoll, IPAddress address) (defined in core::ConsoleServer)core::ConsoleServer - ctx (defined in core::TLSServer)core::TLSServer + check(std::string request)core::Commandvirtual + commandscore::TCPServer + connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket + ConsoleServer(EPoll &ePoll, IPAddress address) (defined in core::ConsoleServer)core::ConsoleServer ePoll (defined in core::Socket)core::Socketprotected - eventReceived(struct epoll_event event)core::Socket - getDescriptor()core::Socket - getName() (defined in core::Command)core::Command - getSocketAccept(EPoll &ePoll) overridecore::ConsoleServervirtual - getSocketAccept() (defined in core::TLSServer)core::TLSServer + eventReceived(struct epoll_event event, pid_t threadId)core::Socket + getBufferSize() (defined in core::Socket)core::Socketprotected + getDescriptor()core::Socket + getName() (defined in core::Command)core::Command + getSocketAccept(EPoll &ePoll) overridecore::ConsoleServervirtual ipAddress (defined in core::TCPSocket)core::TCPSocket logSend(std::string out) override (defined in core::ConsoleServer)core::ConsoleServer name (defined in core::Object)core::Object @@ -90,42 +91,40 @@ $(function() { onDataReceived(std::string data) overridecore::TCPServerprotectedvirtual onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual onRegister()core::Socketvirtual - onRegistered() (defined in core::Socket)core::Socketvirtual - onUnregister()core::Socketvirtual - output(TCPSession *session)core::TCPServer - core::TCPSocket::output(std::stringstream &out)core::TCPSocketvirtual - core::Command::output(Session *session)core::Commandvirtual - processCommand(std::string command, TCPSession *session, std::stringstream &data) overridecore::TCPServerprotectedvirtual - receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual - removeFromSessionList(TCPSession *session) (defined in core::TCPServer)core::TCPServer - sessionErrorHandler(std::string errorString, std::stringstream &out) (defined in core::TCPServer)core::TCPServervirtual - sessionscore::TCPServer - setBufferSize(int length) (defined in core::Socket)core::Socketprotected - setDescriptor(int descriptor)core::Socket - setName(std::string name)core::Command - shutdown(std::string text="unknown")core::Socket - shutDown (defined in core::Socket)core::Socketprotected - Socket(EPoll &ePoll) (defined in core::Socket)core::Socket - Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket + onRegistered()core::Socketvirtual + onUnregister() (defined in core::Socket)core::Socketvirtual + onUnregistered()core::Socketvirtual + output(TCPSession *session)core::TCPServer + core::TCPSocket::output(std::stringstream &out)core::TCPSocketvirtual + core::Command::output(Session *session)core::Commandvirtual + processCommand(std::string command, TCPSession *session, std::stringstream &data) overridecore::TCPServerprotectedvirtual + receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual + removeFromSessionList(TCPSession *session) (defined in core::TCPServer)core::TCPServer + sessionErrorHandler(std::string errorString, std::stringstream &out) (defined in core::TCPServer)core::TCPServervirtual + sessionscore::TCPServer + setBufferSize(int length) (defined in core::Socket)core::Socketprotected + setDescriptor(int descriptor)core::Socket + setName(std::string name)core::Command + shutdown(std::string text="unknown")core::Socket + shutDown (defined in core::Socket)core::Socketprotected + Socket(EPoll &ePoll, std::string text="")core::Socket tag (defined in core::Object)core::Object tag (defined in core::Object)core::Object TCPServer(EPoll &ePoll, IPAddress address, std::string text="")core::TCPServer TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket - TLSServer(EPoll &ePoll, IPAddress address)core::TLSServer - whiteListcore::TCPServer - write(std::string data)core::Socket - write(char *buffer, int length) (defined in core::Socket)core::Socket - ~Socket() (defined in core::Socket)core::Socket - ~TCPServer()core::TCPServer - ~TCPSocket() (defined in core::TCPSocket)core::TCPSocket - ~TLSServer()core::TLSServer + whiteListcore::TCPServer + write(std::string data)core::Socket + write(char *buffer, int length) (defined in core::Socket)core::Socket + ~Socket()core::Socket + ~TCPServer()core::TCPServer + ~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
diff --git a/html/classcore_1_1ConsoleServer.html b/html/classcore_1_1ConsoleServer.html index 49db0af..dfb319e 100644 --- a/html/classcore_1_1ConsoleServer.html +++ b/html/classcore_1_1ConsoleServer.html @@ -1,9 +1,9 @@ - + - + My Project: core::ConsoleServer Class Reference @@ -29,18 +29,21 @@ - + +/* @license-end */
Inheritance graph
- - - - - - + + + + + + +
[legend]
@@ -87,16 +91,17 @@ Collaboration diagram for core::ConsoleServer:
Collaboration graph
- - - - - - - - - - + + + + + + + + + + +
[legend]
@@ -110,14 +115,6 @@ void  - - - - - - - @@ -146,12 +143,10 @@ void  - - - - + + + + @@ -159,11 +154,12 @@ void  - + - - - + + + - + +virtual void  + - - + + + + @@ -197,10 +197,6 @@ std::string 
logSend (std::str
 
TCPSessiongetSocketAccept (EPoll &ePoll) override
 
- Public Member Functions inherited from core::TLSServer
 TLSServer (EPoll &ePoll, IPAddress address)
 
 ~TLSServer ()
 
-TCPSessiongetSocketAccept ()
 
- Public Member Functions inherited from core::TCPServer
 TCPServer (EPoll &ePoll, IPAddress address, std::string text="")
 
connect (virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
 Socket (EPoll &ePoll, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
connect ( 
int getDescriptor ()
 Get the descriptor for the socket.
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
bool eventReceived (struct epoll_event event, pid_t threadId)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
@@ -173,14 +169,18 @@ void write (char *buff void output (std::stringstream &out)
 
virtual void onRegister ()
 Called when the socket has finished registering with the epoll processing. More...
 Called before the socket has registered with the epoll processing. More...
 
-virtual void onRegistered ()
onRegistered ()
 Called after the socket has been registered with epoll processing.
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
+virtual void onUnregister ()
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
bool needsToWrite ()
 
getName ()
- - - @@ -215,10 +211,6 @@ SSL_CTX * IPAddress  - - - @@ -238,6 +230,9 @@ std::string  + + @@ -290,7 +285,7 @@ bool 

Additional Inherited Members

- Public Attributes inherited from core::TLSServer
-SSL_CTX * ctx
 
- Public Attributes inherited from core::TCPServer
IPAddressListblackList
 
ctx
ipAddress
 
- Public Attributes inherited from core::Socket
-class {
bufferSize
 
bool active = false
 
tag void setBufferSize (int length)
 
+int getBufferSize ()
 
virtual void onDataReceived (char *buffer, int len)
 
shutDown = false< diff --git a/html/classcore_1_1ConsoleServer__coll__graph.map b/html/classcore_1_1ConsoleServer__coll__graph.map index e047392..28a0bee 100644 --- a/html/classcore_1_1ConsoleServer__coll__graph.map +++ b/html/classcore_1_1ConsoleServer__coll__graph.map @@ -1,12 +1,13 @@ - - - - - - - - - - + + + + + + + + + + + diff --git a/html/classcore_1_1ConsoleServer__coll__graph.md5 b/html/classcore_1_1ConsoleServer__coll__graph.md5 index bf2975f..ffa96da 100644 --- a/html/classcore_1_1ConsoleServer__coll__graph.md5 +++ b/html/classcore_1_1ConsoleServer__coll__graph.md5 @@ -1 +1 @@ -3dbb00c890c3ec9870b2b842bc328eca \ No newline at end of file +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 index d4abe42..1db634e 100644 Binary files a/html/classcore_1_1ConsoleServer__coll__graph.png 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 index 333df3b..b8bef8f 100644 --- a/html/classcore_1_1ConsoleServer__inherit__graph.map +++ b/html/classcore_1_1ConsoleServer__inherit__graph.map @@ -1,8 +1,9 @@ - - - - - - + + + + + + + diff --git a/html/classcore_1_1ConsoleServer__inherit__graph.md5 b/html/classcore_1_1ConsoleServer__inherit__graph.md5 index e92f488..910dba8 100644 --- a/html/classcore_1_1ConsoleServer__inherit__graph.md5 +++ b/html/classcore_1_1ConsoleServer__inherit__graph.md5 @@ -1 +1 @@ -dfe79bb59a4f703062cac7963c84dead \ No newline at end of file +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 index 30d16a7..667a405 100644 Binary files a/html/classcore_1_1ConsoleServer__inherit__graph.png 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 index 6ee066d..e1f69ff 100644 --- a/html/classcore_1_1ConsoleSession-members.html +++ b/html/classcore_1_1ConsoleSession-members.html @@ -1,9 +1,9 @@ - + - + My Project: Member List @@ -29,18 +29,21 @@
- + +/* @license-end */
This is the complete list of members for core::ConsoleSession, including all inherited members.

- - - - - - - + + + + + + + @@ -84,55 +87,52 @@ $(function() { - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + - + -
active (defined in core::Socket)core::Socket
bufferSize (defined in core::Socket)core::Socket
clear() (defined in core::TerminalSession)core::TerminalSession
clearEOL() (defined in core::TerminalSession)core::TerminalSession
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ConsoleSession(EPoll &ePoll, TCPServer &server) (defined in core::ConsoleSession)core::ConsoleSession
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
clear()core::TerminalSession
clearEOL()core::TerminalSession
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ConsoleSession(EPoll &ePoll, TCPServer &server) (defined in core::ConsoleSession)core::ConsoleSession
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event, pid_t threadId)core::Socket
getBufferSize() (defined in core::Socket)core::Socketprotected
getDescriptor()core::Socket
getLines() (defined in core::TerminalSession)core::TerminalSession
grab (defined in core::TCPSession)core::TCPSession
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
NextLine(int lines) (defined in core::TerminalSession)core::TerminalSession
onConnected(std::stringstream &out)core::TCPSessionprotectedvirtual
onConnected()core::TCPSessionprotectedvirtual
onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::TLSSessionprotectedvirtual
onRegistered() (defined in core::TLSSession)core::TLSSessionprotectedvirtual
onUnregister()core::Socketvirtual
out (defined in core::TerminalSession)core::TerminalSession
output(std::stringstream &out)core::TLSSessionvirtual
PreviousLine(int lines) (defined in core::TerminalSession)core::TerminalSession
protocol(std::stringstream &out, std::string data) overridecore::ConsoleSessionprotectedvirtual
receiveData(char *buffer, int bufferLength) overridecore::TLSSessionprotectedvirtual
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(std::string data)core::TCPSession
sendToAll(std::string data)core::TCPSession
sendToAll(SessionFilter filter, std::string data)core::TCPSession
server (defined in core::TCPSession)core::TCPSession
setBackColor(int color) (defined in core::TerminalSession)core::TerminalSession
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setColor(int color) (defined in core::TerminalSession)core::TerminalSession
setCursorLocation(int x, int y) (defined in core::TerminalSession)core::TerminalSession
setDescriptor(int descriptor)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
shutdown(std::string text="unknown")core::Socket
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
onRegister()core::Socketvirtual
onRegistered() overridecore::TCPSessionprotectedvirtual
onUnregister() (defined in core::Socket)core::Socketvirtual
onUnregistered()core::Socketvirtual
outcore::TCPSession
output(std::stringstream &data)core::TCPSessionvirtual
PreviousLine(int lines) (defined in core::TerminalSession)core::TerminalSession
protocol(std::string data) overridecore::ConsoleSessionprotectedvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
restoreCursor() (defined in core::TerminalSession)core::TerminalSession
saveCursor() (defined in core::TerminalSession)core::TerminalSession
scrollArea(int start, int end) (defined in core::TerminalSession)core::TerminalSession
send()core::TCPSession
sendToAll()core::TCPSession
sendToAll(SessionFilter filter)core::TCPSession
server (defined in core::TCPSession)core::TCPSession
setBackColor(int color) (defined in core::TerminalSession)core::TerminalSession
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setColor(int color) (defined in core::TerminalSession)core::TerminalSession
setCursorLocation(int x, int y)core::TerminalSession
setDescriptor(int descriptor)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
shutdown(std::string text="unknown")core::Socket
Socket(EPoll &ePoll, std::string text="")core::Socket
tag (defined in core::Object)core::Object
TCPSession(EPoll &ePoll, TCPServer &server) (defined in core::TCPSession)core::TCPSession
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
TLSSession(EPoll &ePoll, TCPServer &server) (defined in core::TLSSession)core::TLSSession
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
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
writeLog(std::string data) (defined in core::ConsoleSession)core::ConsoleSession
~ConsoleSession() (defined in core::ConsoleSession)core::ConsoleSession
~Socket() (defined in core::Socket)core::Socket
~Socket()core::Socket
~TCPSession() (defined in core::TCPSession)core::TCPSession
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
~TerminalSession() (defined in core::TerminalSession)core::TerminalSession
~TLSSession() (defined in core::TLSSession)core::TLSSession
diff --git a/html/classcore_1_1ConsoleSession.html b/html/classcore_1_1ConsoleSession.html index 6dbf12b..95b187f 100644 --- a/html/classcore_1_1ConsoleSession.html +++ b/html/classcore_1_1ConsoleSession.html @@ -1,9 +1,9 @@ - + - + My Project: core::ConsoleSession Class Reference @@ -29,18 +29,21 @@ - + +/* @license-end */
Inheritance graph
- - - - - - + + + + + +
[legend]
@@ -90,18 +93,18 @@ Collaboration diagram for core::ConsoleSession:
Collaboration graph
- - - - - - - - - - - - + + + + + + + + + + + +
[legend]
@@ -120,14 +123,11 @@ void  - + - + - + @@ -150,25 +150,18 @@ void  - - - - - - - - - - - - - - - + + + + + + + + + + @@ -180,12 +173,10 @@ void  - - - - + + + + @@ -193,11 +184,12 @@ void  - + - - - + + + - - + + + + + + +
writeLog (std::st
int getLines ()
 
-void clear ()
void clear ()
 
-void clearEOL ()
void clearEOL ()
 
-void setCursorLocation (int x, int y)
void setCursorLocation (int x, int y)
 
void setColor (int color)
PreviousLine (int
void scrollArea (int start, int end)
 
- Public Member Functions inherited from core::TLSSession
TLSSession (EPoll &ePoll, TCPServer &server)
 
virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::TCPSession
TCPSession (EPoll &ePoll, TCPServer &server)
 
TCPSession (EPoll &ePoll, TCPServer &server, std::string text)
 
void send (std::string data)
 
void sendToAll (std::string data)
 
void sendToAll (SessionFilter filter, std::string data)
 
TCPSession (EPoll &ePoll, TCPServer &server, std::string text="")
 
virtual void output (std::stringstream &data)
 
void send ()
 
void sendToAll ()
 
void sendToAll (SessionFilter filter)
 
- Public Member Functions inherited from core::TCPSocket
 TCPSocket (EPoll &ePoll)
scrollArea (int s void connect (IPAddress &address)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
 Socket (EPoll &ePoll, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
connect ( 
int getDescriptor ()
 Get the descriptor for the socket.
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
bool eventReceived (struct epoll_event event, pid_t threadId)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
@@ -206,50 +198,54 @@ void write (char *buff
void output (std::stringstream &out)
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
virtual void onRegister ()
 Called before the socket has registered with the epoll processing. More...
 
+virtual void onUnregister ()
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
bool needsToWrite ()
 
- - - - - - - - - - + + - - + + + + + + + + +

Protected Member Functions

void protocol (std::stringstream &out, std::string data) override
 
- Protected Member Functions inherited from core::TLSSession
void receiveData (char *buffer, int bufferLength) override
 
void onRegister ()
 Called when the socket has finished registering with the epoll processing. More...
 
-void onRegistered ()
 
void protocol (std::string data) override
 
- Protected Member Functions inherited from core::TCPSession
virtual void onDataReceived (std::string data) override
 Called when data is received from the socket. More...
 
virtual void onConnected (std::stringstream &out)
 
+virtual void onRegistered () override
 Called after the socket has been registered with epoll processing.
 
virtual void onConnected ()
 
- Protected Member Functions inherited from core::Socket
void setBufferSize (int length)
 
+int getBufferSize ()
 
virtual void onDataReceived (char *buffer, int len)
 
virtual void receiveData (char *buffer, int bufferLength)
 
- - - + + @@ -258,10 +254,6 @@ std::stringstream  - - - @@ -282,10 +274,10 @@ bool 

Additional Inherited Members

- Public Attributes inherited from core::TerminalSession
-std::stringstream out
 
- Public Attributes inherited from core::TCPSession
Commandgrab = NULL
 
std::stringstream out
 
TCPServerserver
 
out< IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
-class {
bufferSize
 
bool active = false
 
shutDown = false<

Detailed Description

ConsoleSession

-

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

+

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

Member Function Documentation

- -

◆ protocol()

+ +

◆ protocol()

@@ -296,19 +288,9 @@ bool shutDown = false< void core::ConsoleSession::protocol ( - std::stringstream &  - out, - - - - std::string  - data = ""  - - + data = "") - ) - @@ -319,7 +301,7 @@ bool shutDown = false<

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

-

Reimplemented from core::TLSSession.

+

Reimplemented from core::TCPSession.

@@ -332,7 +314,7 @@ bool shutDown = false< diff --git a/html/classcore_1_1ConsoleSession__coll__graph.map b/html/classcore_1_1ConsoleSession__coll__graph.map index 8819783..c01935b 100644 --- a/html/classcore_1_1ConsoleSession__coll__graph.map +++ b/html/classcore_1_1ConsoleSession__coll__graph.map @@ -1,14 +1,14 @@ - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/html/classcore_1_1ConsoleSession__coll__graph.md5 b/html/classcore_1_1ConsoleSession__coll__graph.md5 index c2df77f..d081cdd 100644 --- a/html/classcore_1_1ConsoleSession__coll__graph.md5 +++ b/html/classcore_1_1ConsoleSession__coll__graph.md5 @@ -1 +1 @@ -2a7ca8496e4051856e49b851da4c5559 \ No newline at end of file +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 index 5a3f119..0cb3eb9 100644 Binary files a/html/classcore_1_1ConsoleSession__coll__graph.png 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 index 3a0c5b4..27a13fa 100644 --- a/html/classcore_1_1ConsoleSession__inherit__graph.map +++ b/html/classcore_1_1ConsoleSession__inherit__graph.map @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/html/classcore_1_1ConsoleSession__inherit__graph.md5 b/html/classcore_1_1ConsoleSession__inherit__graph.md5 index 1dff5f2..1dfe9ce 100644 --- a/html/classcore_1_1ConsoleSession__inherit__graph.md5 +++ b/html/classcore_1_1ConsoleSession__inherit__graph.md5 @@ -1 +1 @@ -3e603f5ffc8501706bc5122fe9441483 \ No newline at end of file +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 index 9204116..a36ac13 100644 Binary files a/html/classcore_1_1ConsoleSession__inherit__graph.png 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 index 4043af8..1bd3095 100644 --- a/html/classcore_1_1EPoll-members.html +++ b/html/classcore_1_1EPoll-members.html @@ -1,9 +1,9 @@ - + - + My Project: Member List @@ -29,18 +29,21 @@
- + +/* @license-end */
check(std::string request)core::Commandvirtual EPoll()core::EPoll - eventReceived(struct epoll_event event)core::EPoll + eventReceived(struct epoll_event event, pid_t threadId)core::EPoll getDescriptor()core::EPoll getName() (defined in core::Command)core::Command isStopping()core::EPoll @@ -91,7 +94,7 @@ $(function() { diff --git a/html/classcore_1_1EPoll.html b/html/classcore_1_1EPoll.html index 84efa4d..8c2b402 100644 --- a/html/classcore_1_1EPoll.html +++ b/html/classcore_1_1EPoll.html @@ -1,9 +1,9 @@ - + - + My Project: core::EPoll Class Reference @@ -29,18 +29,21 @@
- + +/* @license-end */
Inheritance graph
- - + + +
[legend]
@@ -86,8 +90,9 @@ Collaboration diagram for core::EPoll:
Collaboration graph
- - + + +
[legend]
@@ -98,28 +103,28 @@ Public Member Functions - + - + - + - + - + - + - - - + + + - + @@ -138,7 +143,7 @@ std::string  - +

EPoll

Manage socket events from the epoll system call.

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

-

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

+

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

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

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

Constructor & Destructor Documentation

@@ -193,8 +198,8 @@ std::string 

Member Function Documentation

- -

◆ eventReceived()

+ +

◆ eventReceived()

@@ -203,8 +208,18 @@ std::string 
void core::EPoll::eventReceived - + + + + + + + + + + +
 ~EPoll ()
 
bool start (int numberOfThreads, int maxSockets)
 Start the BMAEPoll processing. More...
 Start the BMAEPoll processing. More...
 
bool stop ()
 Stop and shut down the BMAEPoll processing. More...
 Stop and shut down the BMAEPoll processing. More...
 
bool isStopping ()
 Returns a true if the stop command has been requested. More...
 Returns a true if the stop command has been requested. More...
 
bool registerSocket (Socket *socket)
 Register a BMASocket for monitoring by BMAEPoll. More...
 Register a BMASocket for monitoring by BMAEPoll. More...
 
bool unregisterSocket (Socket *socket)
 Unregister a BMASocket from monitoring by BMAEPoll. More...
 Unregister a BMASocket from monitoring by BMAEPoll. More...
 
int getDescriptor ()
 Return the descriptor for the ePoll socket. More...
 Return the descriptor for the ePoll socket. More...
 
void eventReceived (struct epoll_event event)
 Dispatch event to appropriate socket. More...
 
void eventReceived (struct epoll_event event, pid_t threadId)
 Dispatch event to appropriate socket. More...
 
int processCommand (std::string command, TCPSession *session, std::stringstream &data) override
 Output the threads array to the console. More...
 Output the threads array to the console. More...
 
void resetSocket (Socket *socket)
getName ()

Public Attributes

int maxSockets
 The maximum number of socket allowed. More...
 The maximum number of socket allowed. More...
 
- Public Attributes inherited from core::Object
@@ -152,7 +157,7 @@ std::string tag tag tag ( struct epoll_event event)event,
pid_t threadId 
)
@@ -250,7 +265,7 @@ std::string tag

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.

+

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

@@ -295,7 +310,7 @@ std::string tag

Output the threads array to the console.

-

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

+

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

Parameters
@@ -362,7 +377,7 @@ std::string 

Start the BMAEPoll processing.

-

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

+

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

Parameters
sessionthe session to write the requested data to.
tag
@@ -389,7 +404,7 @@ std::string 

Stop and shut down the BMAEPoll processing.

-

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

+

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.

@@ -448,7 +463,7 @@ std::string  diff --git a/html/classcore_1_1EPoll__coll__graph.map b/html/classcore_1_1EPoll__coll__graph.map index 2dd6f68..9a1176e 100644 --- a/html/classcore_1_1EPoll__coll__graph.map +++ b/html/classcore_1_1EPoll__coll__graph.map @@ -1,4 +1,5 @@ - - + + + diff --git a/html/classcore_1_1EPoll__coll__graph.md5 b/html/classcore_1_1EPoll__coll__graph.md5 index 888ccec..aa8204c 100644 --- a/html/classcore_1_1EPoll__coll__graph.md5 +++ b/html/classcore_1_1EPoll__coll__graph.md5 @@ -1 +1 @@ -5100dbe7e02384bc36f1eefb02760f18 \ No newline at end of file +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 index 1af8f75..b680b44 100644 Binary files a/html/classcore_1_1EPoll__coll__graph.png 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 index 2dd6f68..9a1176e 100644 --- a/html/classcore_1_1EPoll__inherit__graph.map +++ b/html/classcore_1_1EPoll__inherit__graph.map @@ -1,4 +1,5 @@ - - + + + diff --git a/html/classcore_1_1EPoll__inherit__graph.md5 b/html/classcore_1_1EPoll__inherit__graph.md5 index 067e9e9..aa8204c 100644 --- a/html/classcore_1_1EPoll__inherit__graph.md5 +++ b/html/classcore_1_1EPoll__inherit__graph.md5 @@ -1 +1 @@ -e2aa4627285840b91c6ac05a5f7213fa \ No newline at end of file +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 index 1af8f75..b680b44 100644 Binary files a/html/classcore_1_1EPoll__inherit__graph.png 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 index 8e9b5e2..40cdcec 100644 --- a/html/classcore_1_1INotify-members.html +++ b/html/classcore_1_1INotify-members.html @@ -1,9 +1,9 @@ - + - +My Project: Member List @@ -29,18 +29,21 @@
numberOfThreadsthe number of threads to start for processing epoll entries.
tagtag
- + +/* @license-end */
This is the complete list of members for core::INotify, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - +
active (defined in core::Socket)core::Socketprivate
addWatch(std::string watch) (defined in core::INotify)core::INotify
bufferSize (defined in core::Socket)core::Socketprivate
ePoll (defined in core::Socket)core::Socketprivate
eventReceived(struct epoll_event event)core::Socketprivate
getDescriptor()core::Socketprivate
inAccess(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inAttrib(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inCloseNoWrite(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inCloseWrite(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inCreate(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inDelete(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inDeleteSelf(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inModify(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inMovedFrom(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inMovedTo(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inMoveSelf(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inOpen(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
INotify(EPoll &ePoll) (defined in core::INotify)core::INotify
name (defined in core::Object)core::Objectprivate
needsToWrite() (defined in core::Socket)core::Socketprivate
onDataReceived(char *buffer, int len) override (defined in core::INotify)core::INotifyvirtual
core::Socket::onDataReceived(std::string data)core::Socketprivatevirtual
onRegister()core::Socketprivatevirtual
onRegistered() (defined in core::Socket)core::Socketprivatevirtual
onUnregister()core::Socketprivatevirtual
output(std::stringstream &out) (defined in core::Socket)core::Socketprivate
receiveData(char *buffer, int bufferLength)core::Socketprivatevirtual
addWatch(std::string watch) (defined in core::INotify)core::INotify
inAccess(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inAttrib(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inCloseNoWrite(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inCloseWrite(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inCreate(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inDelete(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inDeleteSelf(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inModify(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inMovedFrom(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inMovedTo(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inMoveSelf(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inOpen(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
INotify(EPoll &ePoll) (defined in core::INotify)core::INotify
onDataReceived(char *buffer, int len) override (defined in core::INotify)core::INotifyvirtual
core::Socket::onDataReceived(std::string data)core::Socketprivatevirtual
removeWatch(int wd) (defined in core::INotify)core::INotify
setBufferSize(int length) (defined in core::Socket)core::Socketprivate
setDescriptor(int descriptor)core::Socketprivate
shutdown(std::string text="unknown")core::Socketprivate
shutDown (defined in core::Socket)core::Socketprivate
Socket(EPoll &ePoll) (defined in core::Socket)core::Socketprivate
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socketprivate
tag (defined in core::Object)core::Objectprivate
write(std::string data)core::Socketprivate
write(char *buffer, int length) (defined in core::Socket)core::Socketprivate
~INotify() (defined in core::INotify)core::INotify
~Socket() (defined in core::Socket)core::Socketprivate
~INotify() (defined in core::INotify)core::INotify
diff --git a/html/classcore_1_1INotify.html b/html/classcore_1_1INotify.html index 9651ce2..ff0c2d1 100644 --- a/html/classcore_1_1INotify.html +++ b/html/classcore_1_1INotify.html @@ -1,9 +1,9 @@ - + - + My Project: core::INotify Class Reference @@ -29,18 +29,21 @@ - + +/* @license-end */
Inheritance graph
- - + + +
[legend]
@@ -83,10 +87,11 @@ Collaboration diagram for core::INotify:
Collaboration graph
- - - - + + + + +
[legend]
@@ -150,7 +155,7 @@ virtual void 
inOpen (s diff --git a/html/classcore_1_1INotify__coll__graph.map b/html/classcore_1_1INotify__coll__graph.map index b1d41e1..8d93182 100644 --- a/html/classcore_1_1INotify__coll__graph.map +++ b/html/classcore_1_1INotify__coll__graph.map @@ -1,6 +1,7 @@ - - - - + + + + + diff --git a/html/classcore_1_1INotify__coll__graph.md5 b/html/classcore_1_1INotify__coll__graph.md5 index fe5b975..79ac55a 100644 --- a/html/classcore_1_1INotify__coll__graph.md5 +++ b/html/classcore_1_1INotify__coll__graph.md5 @@ -1 +1 @@ -d615bb68e8a6be5cf37964a14420474d \ No newline at end of file +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 index 473cbe3..55769f7 100644 Binary files a/html/classcore_1_1INotify__coll__graph.png 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 index eae32dd..ed18cbc 100644 --- a/html/classcore_1_1INotify__inherit__graph.map +++ b/html/classcore_1_1INotify__inherit__graph.map @@ -1,4 +1,5 @@ - - + + + diff --git a/html/classcore_1_1INotify__inherit__graph.md5 b/html/classcore_1_1INotify__inherit__graph.md5 index d573144..b389cbb 100644 --- a/html/classcore_1_1INotify__inherit__graph.md5 +++ b/html/classcore_1_1INotify__inherit__graph.md5 @@ -1 +1 @@ -0dc5338bf2f693f8fb086fcab1450564 \ No newline at end of file +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 index 1335acb..c1e2e36 100644 Binary files a/html/classcore_1_1INotify__inherit__graph.png 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 index fd983d4..d7627c8 100644 --- a/html/classcore_1_1IPAddress-members.html +++ b/html/classcore_1_1IPAddress-members.html @@ -1,9 +1,9 @@ - + - + My Project: Member List @@ -29,18 +29,21 @@
- + +/* @license-end */ - + +/* @license-end */
Inheritance graph
- + +
[legend]
@@ -83,7 +87,8 @@ Collaboration diagram for core::IPAddress:
Collaboration graph
- + +
[legend]
@@ -136,7 +141,7 @@ std::string  diff --git a/html/classcore_1_1IPAddressList-members.html b/html/classcore_1_1IPAddressList-members.html index 4d47b63..8d59b01 100644 --- a/html/classcore_1_1IPAddressList-members.html +++ b/html/classcore_1_1IPAddressList-members.html @@ -1,9 +1,9 @@ - + - +My Project: Member List @@ -29,18 +29,21 @@
tag
- + +/* @license-end */ - + +/* @license-end */
std::map< std::string, IPAddressgetList ()   - -bool add (IPAddress ipAddress) -  + +void add (IPAddress ipAddress) +  bool remove (IPAddress ipAddress)   @@ -94,7 +97,7 @@ bool contains (std::st diff --git a/html/classcore_1_1IPAddress__coll__graph.map b/html/classcore_1_1IPAddress__coll__graph.map index 7eca7d2..81aa07c 100644 --- a/html/classcore_1_1IPAddress__coll__graph.map +++ b/html/classcore_1_1IPAddress__coll__graph.map @@ -1,3 +1,4 @@ - + + diff --git a/html/classcore_1_1IPAddress__coll__graph.md5 b/html/classcore_1_1IPAddress__coll__graph.md5 index 25ec95e..63ac5ab 100644 --- a/html/classcore_1_1IPAddress__coll__graph.md5 +++ b/html/classcore_1_1IPAddress__coll__graph.md5 @@ -1 +1 @@ -3b3fbb00dc006532931123df36fd8468 \ No newline at end of file +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 index 4ca1e1f..bb94f98 100644 Binary files a/html/classcore_1_1IPAddress__coll__graph.png 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 index 7eca7d2..81aa07c 100644 --- a/html/classcore_1_1IPAddress__inherit__graph.map +++ b/html/classcore_1_1IPAddress__inherit__graph.map @@ -1,3 +1,4 @@ - + + diff --git a/html/classcore_1_1IPAddress__inherit__graph.md5 b/html/classcore_1_1IPAddress__inherit__graph.md5 index 9fc789d..63ac5ab 100644 --- a/html/classcore_1_1IPAddress__inherit__graph.md5 +++ b/html/classcore_1_1IPAddress__inherit__graph.md5 @@ -1 +1 @@ -af05ea810e19e939cc00405a63da9dfe \ No newline at end of file +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 index 4ca1e1f..bb94f98 100644 Binary files a/html/classcore_1_1IPAddress__inherit__graph.png 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 index 7ad76cf..3c02168 100644 --- a/html/classcore_1_1Object-members.html +++ b/html/classcore_1_1Object-members.html @@ -1,9 +1,9 @@ - + - + My Project: Member List @@ -29,18 +29,21 @@
- + +/* @license-end */ - + +/* @license-end */
Inheritance graph
- - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + +
[legend]
@@ -113,7 +117,7 @@ std::string  diff --git a/html/classcore_1_1Object__inherit__graph.map b/html/classcore_1_1Object__inherit__graph.map index 3ababec..65d5838 100644 --- a/html/classcore_1_1Object__inherit__graph.map +++ b/html/classcore_1_1Object__inherit__graph.map @@ -1,21 +1,22 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/html/classcore_1_1Object__inherit__graph.md5 b/html/classcore_1_1Object__inherit__graph.md5 index 0d3c9be..88d4587 100644 --- a/html/classcore_1_1Object__inherit__graph.md5 +++ b/html/classcore_1_1Object__inherit__graph.md5 @@ -1 +1 @@ -a9cce15cc34832b431df91662c11b71d \ No newline at end of file +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 index 99816f0..35be2c7 100644 Binary files a/html/classcore_1_1Object__inherit__graph.png 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 index a69f193..b1defab 100644 --- a/html/classcore_1_1SessionFilter-members.html +++ b/html/classcore_1_1SessionFilter-members.html @@ -1,9 +1,9 @@ - + - +My Project: Member List @@ -29,18 +29,21 @@
tag
- + +/* @license-end */ - + +/* @license-end */
Inheritance graph
- + +
[legend]
@@ -82,7 +86,8 @@ Collaboration diagram for core::SessionFilter:
Collaboration graph
- + +
[legend]
@@ -110,7 +115,7 @@ std::string  diff --git a/html/classcore_1_1SessionFilter__coll__graph.map b/html/classcore_1_1SessionFilter__coll__graph.map index 9c18031..f35924b 100644 --- a/html/classcore_1_1SessionFilter__coll__graph.map +++ b/html/classcore_1_1SessionFilter__coll__graph.map @@ -1,3 +1,4 @@ - + + diff --git a/html/classcore_1_1SessionFilter__coll__graph.md5 b/html/classcore_1_1SessionFilter__coll__graph.md5 index 5b37d0c..e75907b 100644 --- a/html/classcore_1_1SessionFilter__coll__graph.md5 +++ b/html/classcore_1_1SessionFilter__coll__graph.md5 @@ -1 +1 @@ -808a9f2c332a110e5262a651ca2ff7c1 \ No newline at end of file +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 index 8512724..f68f200 100644 Binary files a/html/classcore_1_1SessionFilter__coll__graph.png 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 index 9c18031..f35924b 100644 --- a/html/classcore_1_1SessionFilter__inherit__graph.map +++ b/html/classcore_1_1SessionFilter__inherit__graph.map @@ -1,3 +1,4 @@ - + + diff --git a/html/classcore_1_1SessionFilter__inherit__graph.md5 b/html/classcore_1_1SessionFilter__inherit__graph.md5 index 9e8a557..e75907b 100644 --- a/html/classcore_1_1SessionFilter__inherit__graph.md5 +++ b/html/classcore_1_1SessionFilter__inherit__graph.md5 @@ -1 +1 @@ -c829fe9289b5779616664f8a6bcd9c0b \ No newline at end of file +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 index 8512724..f68f200 100644 Binary files a/html/classcore_1_1SessionFilter__inherit__graph.png 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 index 9563454..7b4fd22 100644 --- a/html/classcore_1_1Socket-members.html +++ b/html/classcore_1_1Socket-members.html @@ -1,9 +1,9 @@ - + - +My Project: Member List @@ -29,18 +29,21 @@
tag
- + +/* @license-end */
This is the complete list of members for core::Socket, including all inherited members.

- - - + + + - - - - - - - + + + + + + + - - + + - +
active (defined in core::Socket)core::Socket
bufferSize (defined in core::Socket)core::Socket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event, pid_t threadId)core::Socket
getBufferSize() (defined in core::Socket)core::Socketprotected
getDescriptor()core::Socket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onDataReceived(std::string data)core::Socketprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::Socketvirtual
onRegistered() (defined in core::Socket)core::Socketvirtual
onUnregister()core::Socketvirtual
output(std::stringstream &out) (defined in core::Socket)core::Socket
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
onRegistered()core::Socketvirtual
onUnregister() (defined in core::Socket)core::Socketvirtual
onUnregistered()core::Socketvirtual
output(std::stringstream &out) (defined in core::Socket)core::Socket
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutdown(std::string text="unknown")core::Socket
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll, std::string text="")core::Socket
tag (defined in core::Object)core::Object
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~Socket()core::Socket
diff --git a/html/classcore_1_1Socket.html b/html/classcore_1_1Socket.html index eb01ceb..af2cf5d 100644 --- a/html/classcore_1_1Socket.html +++ b/html/classcore_1_1Socket.html @@ -1,9 +1,9 @@ - + - + My Project: core::Socket Class Reference @@ -29,18 +29,21 @@ - + +/* @license-end */
Inheritance graph
- - - - - - - - - - - - - + + + + + + + + + + + + + +
[legend]
@@ -99,32 +103,32 @@ Collaboration diagram for core::Socket:
Collaboration graph
- - - + + + +
[legend]
- - - - + + + + - + - + - - - + + + - + +virtual void  + - - + + + +

Public Member Functions

Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
 Socket (EPoll &ePoll, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 Set the descriptor for the socket. More...
 
int getDescriptor ()
 Get the descriptor for the socket.
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
bool eventReceived (struct epoll_event event, pid_t threadId)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
@@ -134,24 +138,24 @@ void write (char *buff void output (std::stringstream &out)
 
virtual void onRegister ()
 Called when the socket has finished registering with the epoll processing. More...
 Called before the socket has registered with the epoll processing. More...
 
-virtual void onRegistered ()
onRegistered ()
 Called after the socket has been registered with epoll processing.
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
+virtual void onUnregister ()
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
bool needsToWrite ()
 
- - - @@ -168,8 +172,11 @@ Protected Member Functions + + - + @@ -189,13 +196,69 @@ bool  - + + + + + + + + + + +

Public Attributes

-class {
bufferSize
 
bool active = false
 
void setBufferSize (int length)
 
+int getBufferSize ()
 
virtual void onDataReceived (std::string data)
 Called when data is received from the socket. More...
 Called when data is received from the socket. More...
 
virtual void onDataReceived (char *buffer, int len)
shutDown = false<

Detailed Description

Socket

The core component to managing a socket.

-

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

-

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

-

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

+

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.

-

Member Function Documentation

- -

◆ eventReceived()

+

Constructor & Destructor Documentation

+ +

◆ Socket()

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

Constructor

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

◆ ~Socket()

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

Destructor

+ +
+
+

Member Function Documentation

+ +

◆ eventReceived()

@@ -204,8 +267,18 @@ bool 
shutDown = false< bool core::Socket::eventReceived ( struct epoll_event event)event,
pid_t threadId 
)
@@ -276,15 +349,15 @@ bool shutDown = false<
-

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

+

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::TCPSession, and core::TLSSession.

+

Reimplemented in core::TLSSession.

- -

◆ onUnregister()

+ +

◆ onUnregistered()

@@ -293,7 +366,7 @@ bool shutDown = false< - + @@ -307,7 +380,7 @@ bool 
void core::Socket::onUnregister void core::Socket::onUnregistered ( ) shutDown = false<

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

-

The onUnregister 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.

+

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.

@@ -367,7 +440,7 @@ bool 
shutDown = false<

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.

+

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

@@ -418,7 +491,7 @@ bool 
shutDown = false< diff --git a/html/classcore_1_1Socket__coll__graph.map b/html/classcore_1_1Socket__coll__graph.map index 5d5b731..88e030c 100644 --- a/html/classcore_1_1Socket__coll__graph.map +++ b/html/classcore_1_1Socket__coll__graph.map @@ -1,5 +1,6 @@ - - - + + + + diff --git a/html/classcore_1_1Socket__coll__graph.md5 b/html/classcore_1_1Socket__coll__graph.md5 index adf45fb..14829d4 100644 --- a/html/classcore_1_1Socket__coll__graph.md5 +++ b/html/classcore_1_1Socket__coll__graph.md5 @@ -1 +1 @@ -69112406f6e1b169165eaf15d0d8693f \ No newline at end of file +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 index 50d6e28..fec3560 100644 Binary files a/html/classcore_1_1Socket__coll__graph.png 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 index 5df49a1..af891a2 100644 --- a/html/classcore_1_1Socket__inherit__graph.map +++ b/html/classcore_1_1Socket__inherit__graph.map @@ -1,15 +1,16 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/html/classcore_1_1Socket__inherit__graph.md5 b/html/classcore_1_1Socket__inherit__graph.md5 index 01198a1..5c3ac3c 100644 --- a/html/classcore_1_1Socket__inherit__graph.md5 +++ b/html/classcore_1_1Socket__inherit__graph.md5 @@ -1 +1 @@ -7ef660fbc96e2f0002243bed1d5353f3 \ No newline at end of file +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 index 4090821..37b75e3 100644 Binary files a/html/classcore_1_1Socket__inherit__graph.png 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 index 9452d81..d64dbed 100644 --- a/html/classcore_1_1TCPServer-members.html +++ b/html/classcore_1_1TCPServer-members.html @@ -1,9 +1,9 @@ - + - + My Project: Member List @@ -29,18 +29,21 @@
- + +/* @license-end */
active (defined in core::Socket)core::Socket blackListcore::TCPServer - bufferSize (defined in core::Socket)core::Socket - check(std::string request)core::Commandvirtual - commandscore::TCPServer - connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket - ePoll (defined in core::Socket)core::Socketprotected - eventReceived(struct epoll_event event)core::Socket + check(std::string request)core::Commandvirtual + commandscore::TCPServer + connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket + ePoll (defined in core::Socket)core::Socketprotected + eventReceived(struct epoll_event event, pid_t threadId)core::Socket + getBufferSize() (defined in core::Socket)core::Socketprotected getDescriptor()core::Socket getName() (defined in core::Command)core::Command getSocketAccept(EPoll &epoll)core::TCPServervirtual @@ -86,23 +89,23 @@ $(function() { onDataReceived(std::string data) overridecore::TCPServerprotectedvirtual onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual onRegister()core::Socketvirtual - onRegistered() (defined in core::Socket)core::Socketvirtual - onUnregister()core::Socketvirtual - output(TCPSession *session)core::TCPServer - core::TCPSocket::output(std::stringstream &out)core::TCPSocketvirtual - core::Command::output(Session *session)core::Commandvirtual - processCommand(std::string command, TCPSession *session, std::stringstream &data) overridecore::TCPServerprotectedvirtual - receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual - removeFromSessionList(TCPSession *session) (defined in core::TCPServer)core::TCPServer - sessionErrorHandler(std::string errorString, std::stringstream &out) (defined in core::TCPServer)core::TCPServervirtual - sessionscore::TCPServer - setBufferSize(int length) (defined in core::Socket)core::Socketprotected - setDescriptor(int descriptor)core::Socket - setName(std::string name)core::Command - shutdown(std::string text="unknown")core::Socket + onRegistered()core::Socketvirtual + onUnregister() (defined in core::Socket)core::Socketvirtual + onUnregistered()core::Socketvirtual + output(TCPSession *session)core::TCPServer + core::TCPSocket::output(std::stringstream &out)core::TCPSocketvirtual + core::Command::output(Session *session)core::Commandvirtual + processCommand(std::string command, TCPSession *session, std::stringstream &data) overridecore::TCPServerprotectedvirtual + receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual + removeFromSessionList(TCPSession *session) (defined in core::TCPServer)core::TCPServer + sessionErrorHandler(std::string errorString, std::stringstream &out) (defined in core::TCPServer)core::TCPServervirtual + sessionscore::TCPServer + setBufferSize(int length) (defined in core::Socket)core::Socketprotected + setDescriptor(int descriptor)core::Socket + setName(std::string name)core::Command shutDown (defined in core::Socket)core::Socketprotected - Socket(EPoll &ePoll) (defined in core::Socket)core::Socket - Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket + 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 @@ -111,7 +114,7 @@ $(function() { whiteListcore::TCPServer write(std::string data)core::Socket write(char *buffer, int length) (defined in core::Socket)core::Socket - ~Socket() (defined in core::Socket)core::Socket + ~Socket()core::Socket ~TCPServer()core::TCPServer ~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
@@ -119,7 +122,7 @@ $(function() { diff --git a/html/classcore_1_1TCPServer.html b/html/classcore_1_1TCPServer.html index 9417626..7d4863f 100644 --- a/html/classcore_1_1TCPServer.html +++ b/html/classcore_1_1TCPServer.html @@ -1,9 +1,9 @@ - + - + My Project: core::TCPServer Class Reference @@ -29,18 +29,21 @@
- + +/* @license-end */
Inheritance graph
- - - - - - + + + + + + +
[legend]
@@ -91,14 +95,15 @@ Collaboration diagram for core::TCPServer:
Collaboration graph
- - - - - - - - + + + + + + + + +
[legend]
@@ -133,12 +138,10 @@ void  - - - - + + + + @@ -146,11 +149,12 @@ void  - + - - - + + + - + +virtual void  + - - + + + + @@ -197,10 +205,6 @@ Public AttributesIPAddress  - - - @@ -222,6 +226,9 @@ Protected Member Functions + + @@ -494,7 +501,7 @@ bool 
connect (virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
 Socket (EPoll &ePoll, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
connect ( 
int getDescriptor ()
 Get the descriptor for the socket.
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
bool eventReceived (struct epoll_event event, pid_t threadId)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
@@ -160,14 +164,18 @@ void write (char *buff void output (std::stringstream &out)
 
virtual void onRegister ()
 Called when the socket has finished registering with the epoll processing. More...
 Called before the socket has registered with the epoll processing. More...
 
-virtual void onRegistered ()
onRegistered ()
 Called after the socket has been registered with epoll processing.
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
+virtual void onUnregister ()
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
bool needsToWrite ()
 
ipAddress
 
- Public Attributes inherited from core::Socket
-class {
bufferSize
 
bool active = false
 
void setBufferSize (int length)
 
+int getBufferSize ()
 
virtual void onDataReceived (char *buffer, int len)
 
shutDown = false< diff --git a/html/classcore_1_1TCPServer__coll__graph.map b/html/classcore_1_1TCPServer__coll__graph.map index 1207a40..ec3aa71 100644 --- a/html/classcore_1_1TCPServer__coll__graph.map +++ b/html/classcore_1_1TCPServer__coll__graph.map @@ -1,10 +1,11 @@ - - - - - - - - + + + + + + + + + diff --git a/html/classcore_1_1TCPServer__coll__graph.md5 b/html/classcore_1_1TCPServer__coll__graph.md5 index f30d23c..e7e71e7 100644 --- a/html/classcore_1_1TCPServer__coll__graph.md5 +++ b/html/classcore_1_1TCPServer__coll__graph.md5 @@ -1 +1 @@ -3feaddc5f29c199ea67975f439e6fce2 \ No newline at end of file +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 index ea36462..0a405a9 100644 Binary files a/html/classcore_1_1TCPServer__coll__graph.png 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 index 0027ae9..1988cce 100644 --- a/html/classcore_1_1TCPServer__inherit__graph.map +++ b/html/classcore_1_1TCPServer__inherit__graph.map @@ -1,8 +1,9 @@ - - - - - - + + + + + + + diff --git a/html/classcore_1_1TCPServer__inherit__graph.md5 b/html/classcore_1_1TCPServer__inherit__graph.md5 index 5cf1c96..31f3378 100644 --- a/html/classcore_1_1TCPServer__inherit__graph.md5 +++ b/html/classcore_1_1TCPServer__inherit__graph.md5 @@ -1 +1 @@ -544c4cb05809c71627f2430f64a4f540 \ No newline at end of file +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 index 5f8246b..3eaca52 100644 Binary files a/html/classcore_1_1TCPServer__inherit__graph.png 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 index bca1a2c..6fab674 100644 --- a/html/classcore_1_1TCPSession-members.html +++ b/html/classcore_1_1TCPSession-members.html @@ -1,9 +1,9 @@ - + - + My Project: Member List @@ -29,18 +29,21 @@
- + +/* @license-end */
This is the complete list of members for core::TCPSession, including all inherited members.

- - - - + + + + - + - - - + + + + + - + - - - + + + - - - - - + + + - +
active (defined in core::Socket)core::Socket
bufferSize (defined in core::Socket)core::Socket
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event, pid_t threadId)core::Socket
getBufferSize() (defined in core::Socket)core::Socketprotected
getDescriptor()core::Socket
grab (defined in core::TCPSession)core::TCPSession
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onConnected(std::stringstream &out)core::TCPSessionprotectedvirtual
onConnected()core::TCPSessionprotectedvirtual
onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister() overridecore::TCPSessionprotectedvirtual
onRegistered() (defined in core::Socket)core::Socketvirtual
onUnregister()core::Socketvirtual
onRegister()core::Socketvirtual
onRegistered() overridecore::TCPSessionprotectedvirtual
onUnregister() (defined in core::Socket)core::Socketvirtual
onUnregistered()core::Socketvirtual
outcore::TCPSession
output(std::stringstream &data)core::TCPSessionvirtual
protocol(std::stringstream &out, std::string data)core::TCPSessionprotectedvirtual
protocol(std::string data)core::TCPSessionprotectedvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
send(std::string data)core::TCPSession
sendToAll(std::string data)core::TCPSession
sendToAll(SessionFilter filter, std::string data)core::TCPSession
send()core::TCPSession
sendToAll()core::TCPSession
sendToAll(SessionFilter filter)core::TCPSession
server (defined in core::TCPSession)core::TCPSession
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
shutdown(std::string text="unknown")core::Socket
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
TCPSession(EPoll &ePoll, TCPServer &server) (defined in core::TCPSession)core::TCPSession
TCPSession(EPoll &ePoll, TCPServer &server, std::string text) (defined in core::TCPSession)core::TCPSession
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
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~Socket()core::Socket
~TCPSession() (defined in core::TCPSession)core::TCPSession
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
@@ -113,7 +116,7 @@ $(function() { diff --git a/html/classcore_1_1TCPSession.html b/html/classcore_1_1TCPSession.html index 1938a8c..bcf064c 100644 --- a/html/classcore_1_1TCPSession.html +++ b/html/classcore_1_1TCPSession.html @@ -1,9 +1,9 @@ - + - + My Project: core::TCPSession Class Reference @@ -29,18 +29,21 @@ - + +/* @license-end */
Inheritance graph
- - - - - - + + + + + + +
[legend]
@@ -91,34 +95,32 @@ Collaboration diagram for core::TCPSession:
Collaboration graph
- - - - - - - - - + + + + + + + + + +
[legend]
- - - - + + - - - - - - + + + + + + @@ -130,12 +132,10 @@ Public Member Functions void  - - - - + + + + @@ -143,11 +143,12 @@ void  - + - - - + + + - - - - + + + + + + + @@ -171,6 +175,8 @@ Public Attributes + + @@ -179,10 +185,6 @@ Public AttributesIPAddress  - - - @@ -197,19 +199,23 @@ std::string  - + - - - - - - - + + + + + + + + + @@ -228,10 +234,11 @@ bool 

Public Member Functions

TCPSession (EPoll &ePoll, TCPServer &server)
 
TCPSession (EPoll &ePoll, TCPServer &server, std::string text)
 
TCPSession (EPoll &ePoll, TCPServer &server, std::string text="")
 
virtual void output (std::stringstream &data)
 
void send (std::string data)
 
void sendToAll (std::string data)
 
void sendToAll (SessionFilter filter, std::string data)
 
void send ()
 
void sendToAll ()
 
void sendToAll (SessionFilter filter)
 
- Public Member Functions inherited from core::TCPSocket
 TCPSocket (EPoll &ePoll)
connect (IPAddress &address)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
 Socket (EPoll &ePoll, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
connect ( 
int getDescriptor ()
 Get the descriptor for the socket.
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
bool eventReceived (struct epoll_event event, pid_t threadId)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
@@ -156,12 +157,15 @@ void write (char *buff
void output (std::stringstream &out)
 
-virtual void onRegistered ()
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
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 ()
 
Commandgrab = NULL
 
std::stringstream out
 
TCPServerserver
 
ipAddress
 
- Public Attributes inherited from core::Socket
-class {
bufferSize
 
bool active = false
 
tag

Protected Member Functions

virtual void onDataReceived (std::string data) override
 Called when data is received from the socket. More...
 Called when data is received from the socket. More...
 
virtual void onRegister () override
 Called when the socket has finished registering with the epoll processing. More...
 
virtual void onConnected (std::stringstream &out)
 
virtual void protocol (std::stringstream &out, std::string data)
 
+virtual void onRegistered () override
 Called after the socket has been registered with epoll processing.
 
virtual void onConnected ()
 
virtual void protocol (std::string data)
 
- Protected Member Functions inherited from core::Socket
void setBufferSize (int length)
 
+int getBufferSize ()
 
virtual void onDataReceived (char *buffer, int len)
 
shutDown = false<

Detailed Description

TCPSession

-

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

+

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

Member Function Documentation

- -

◆ onConnected()

+ +

◆ onConnected()

@@ -242,8 +249,7 @@ bool shutDown = false< void core::TCPSession::onConnected ( - std::stringstream &  - out) + ) @@ -292,38 +298,6 @@ bool shutDown = false<

Reimplemented from core::Socket.

-
-
- -

◆ onRegister()

- -
-
- - - - - -
- - - - - - - -
void core::TCPSession::onRegister ()
-
-overrideprotectedvirtual
-
- -

Called when the socket has finished registering 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.

- -

Reimplemented in core::TLSSession.

-
@@ -357,8 +331,8 @@ bool shutDown = false<
- -

◆ protocol()

+ +

◆ protocol()

@@ -369,19 +343,9 @@ bool shutDown = false< void core::TCPSession::protocol ( - std::stringstream &  - out, - - - - std::string  - data = ""  - - + data = "") - ) - @@ -392,12 +356,12 @@ bool shutDown = false<

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

-

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

+

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

- -

◆ send()

+ +

◆ send()

@@ -405,8 +369,7 @@ bool shutDown = false< void core::TCPSession::send ( - std::string  - data) + ) @@ -415,8 +378,8 @@ bool shutDown = false<
- -

◆ sendToAll() [1/2]

+ +

◆ sendToAll() [1/2]

@@ -424,8 +387,7 @@ bool shutDown = false< void core::TCPSession::sendToAll ( - std::string  - data) + ) @@ -434,8 +396,8 @@ bool shutDown = false<
- -

◆ sendToAll() [2/2]

+ +

◆ sendToAll() [2/2]

@@ -444,23 +406,29 @@ bool shutDown = false< void core::TCPSession::sendToAll ( SessionFilter  - filter, - - - + filter) - std::string  - data  - - - - ) -

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.

+
+
+

Member Data Documentation

+ +

◆ out

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

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

+

The documentation for this class was generated from the following files:
    @@ -472,7 +440,7 @@ bool shutDown = false< diff --git a/html/classcore_1_1TCPSession__coll__graph.map b/html/classcore_1_1TCPSession__coll__graph.map index 975c35d..9d9ac13 100644 --- a/html/classcore_1_1TCPSession__coll__graph.map +++ b/html/classcore_1_1TCPSession__coll__graph.map @@ -1,11 +1,12 @@ - - - - - - - - - + + + + + + + + + + diff --git a/html/classcore_1_1TCPSession__coll__graph.md5 b/html/classcore_1_1TCPSession__coll__graph.md5 index 0691aea..62fd9c1 100644 --- a/html/classcore_1_1TCPSession__coll__graph.md5 +++ b/html/classcore_1_1TCPSession__coll__graph.md5 @@ -1 +1 @@ -acc0be7de9eb6aa1e60c277b6d5fe67e \ No newline at end of file +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 index 60866bd..c40aa7d 100644 Binary files a/html/classcore_1_1TCPSession__coll__graph.png 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 index 8aeb966..65dc9fe 100644 --- a/html/classcore_1_1TCPSession__inherit__graph.map +++ b/html/classcore_1_1TCPSession__inherit__graph.map @@ -1,8 +1,9 @@ - - - - - - + + + + + + + diff --git a/html/classcore_1_1TCPSession__inherit__graph.md5 b/html/classcore_1_1TCPSession__inherit__graph.md5 index b1e3558..a9a8cbf 100644 --- a/html/classcore_1_1TCPSession__inherit__graph.md5 +++ b/html/classcore_1_1TCPSession__inherit__graph.md5 @@ -1 +1 @@ -f946a781463cc4c36fd96366b802a111 \ No newline at end of file +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 index 0d2a88c..2a04919 100644 Binary files a/html/classcore_1_1TCPSession__inherit__graph.png 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 index c3fec06..08b11fc 100644 --- a/html/classcore_1_1TCPSocket-members.html +++ b/html/classcore_1_1TCPSocket-members.html @@ -1,9 +1,9 @@ - + - + My Project: Member List @@ -29,18 +29,21 @@ - + +/* @license-end */
    This is the complete list of members for core::TCPSocket, including all inherited members.

    - - - - + + + + @@ -81,29 +84,29 @@ $(function() { - - - - - - - - - - + + + + + + + + + + - +
    active (defined in core::Socket)core::Socket
    bufferSize (defined in core::Socket)core::Socket
    connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
    ePoll (defined in core::Socket)core::Socketprotected
    eventReceived(struct epoll_event event)core::Socket
    connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
    ePoll (defined in core::Socket)core::Socketprotected
    eventReceived(struct epoll_event event, pid_t threadId)core::Socket
    getBufferSize() (defined in core::Socket)core::Socketprotected
    getDescriptor()core::Socket
    ipAddress (defined in core::TCPSocket)core::TCPSocket
    name (defined in core::Object)core::Object
    onDataReceived(std::string data)core::Socketprotectedvirtual
    onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
    onRegister()core::Socketvirtual
    onRegistered() (defined in core::Socket)core::Socketvirtual
    onUnregister()core::Socketvirtual
    output(std::stringstream &out)core::TCPSocketvirtual
    receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
    setBufferSize(int length) (defined in core::Socket)core::Socketprotected
    setDescriptor(int descriptor)core::Socket
    shutDown (defined in core::Socket)core::Socketprotected
    shutdown(std::string text="unknown")core::Socket
    Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
    Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
    onRegistered()core::Socketvirtual
    onUnregister() (defined in core::Socket)core::Socketvirtual
    onUnregistered()core::Socketvirtual
    output(std::stringstream &out)core::TCPSocketvirtual
    receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
    setBufferSize(int length) (defined in core::Socket)core::Socketprotected
    setDescriptor(int descriptor)core::Socket
    shutDown (defined in core::Socket)core::Socketprotected
    shutdown(std::string text="unknown")core::Socket
    Socket(EPoll &ePoll, std::string text="")core::Socket
    tag (defined in core::Object)core::Object
    TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
    TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket
    write(std::string data)core::Socket
    write(char *buffer, int length) (defined in core::Socket)core::Socket
    ~Socket() (defined in core::Socket)core::Socket
    ~Socket()core::Socket
    ~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
    diff --git a/html/classcore_1_1TCPSocket.html b/html/classcore_1_1TCPSocket.html index 9aa3752..1e0537b 100644 --- a/html/classcore_1_1TCPSocket.html +++ b/html/classcore_1_1TCPSocket.html @@ -1,9 +1,9 @@ - + - + My Project: core::TCPSocket Class Reference @@ -29,18 +29,21 @@ - + +/* @license-end */
    Inheritance graph
    - - - - - - - - - + + + + + + + + + +
    [legend]
    @@ -93,11 +97,12 @@ Collaboration diagram for core::TCPSocket:
    Collaboration graph
    - - - - - + + + + + +
    [legend]
    @@ -115,12 +120,10 @@ void  - - - - + + + + @@ -128,11 +131,12 @@ void  - + - - - + + + - + +virtual void  + - - + + + + @@ -160,10 +168,6 @@ Public AttributesIPAddress  - - - @@ -181,6 +185,9 @@ Additional Inherited Members + + @@ -240,7 +247,7 @@ bool 
    connect (virtual void output (std::stringstream &out)
     
    - Public Member Functions inherited from core::Socket
    Socket (EPoll &ePoll)
     
    Socket (EPoll &ePoll, std::string text)
     
     Socket (EPoll &ePoll, std::string text="")
     
     ~Socket ()
     
    void shutdown (std::string text="unknown")
     
    void setDescriptor (int descriptor)
    connect ( 
    int getDescriptor ()
     Get the descriptor for the socket.
     Get the descriptor for the socket.
    +
     
    bool eventReceived (struct epoll_event event)
     Parse epoll event and call specified callbacks. More...
     
    bool eventReceived (struct epoll_event event, pid_t threadId)
     Parse epoll event and call specified callbacks. More...
     
    int write (std::string data)
     
    @@ -142,14 +146,18 @@ void write (char *buff void output (std::stringstream &out)
     
    virtual void onRegister ()
     Called when the socket has finished registering with the epoll processing. More...
     Called before the socket has registered with the epoll processing. More...
     
    -virtual void onRegistered ()
    onRegistered ()
     Called after the socket has been registered with epoll processing.
     
    virtual void onUnregister ()
     Called when the socket has finished unregistering for the epoll processing. More...
    +virtual void onUnregister ()
     
    virtual void onUnregistered ()
     Called when the socket has finished unregistering for the epoll processing. More...
     
    bool needsToWrite ()
     
    ipAddress
     
    - Public Attributes inherited from core::Socket
    -class {
    bufferSize
     
    bool active = false
     
    void setBufferSize (int length)
     
    +int getBufferSize ()
     
    virtual void onDataReceived (std::string data)
     Called when data is received from the socket. More...
     
    shutDown = false< diff --git a/html/classcore_1_1TCPSocket__coll__graph.map b/html/classcore_1_1TCPSocket__coll__graph.map index 8db6209..8a52344 100644 --- a/html/classcore_1_1TCPSocket__coll__graph.map +++ b/html/classcore_1_1TCPSocket__coll__graph.map @@ -1,7 +1,8 @@ - - - - - + + + + + + diff --git a/html/classcore_1_1TCPSocket__coll__graph.md5 b/html/classcore_1_1TCPSocket__coll__graph.md5 index a74e95d..ca4f444 100644 --- a/html/classcore_1_1TCPSocket__coll__graph.md5 +++ b/html/classcore_1_1TCPSocket__coll__graph.md5 @@ -1 +1 @@ -5bef268104703d1d333c410770a4e9f9 \ No newline at end of file +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 index 5cf3a7c..5c32eb7 100644 Binary files a/html/classcore_1_1TCPSocket__coll__graph.png 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 index fda090e..fd8935a 100644 --- a/html/classcore_1_1TCPSocket__inherit__graph.map +++ b/html/classcore_1_1TCPSocket__inherit__graph.map @@ -1,11 +1,12 @@ - - - - - - - - - + + + + + + + + + + diff --git a/html/classcore_1_1TCPSocket__inherit__graph.md5 b/html/classcore_1_1TCPSocket__inherit__graph.md5 index 0b0aa3d..9360946 100644 --- a/html/classcore_1_1TCPSocket__inherit__graph.md5 +++ b/html/classcore_1_1TCPSocket__inherit__graph.md5 @@ -1 +1 @@ -58e78285961f10a20f4b51951e70d6e3 \ No newline at end of file +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 index 8fcf00b..fe6acaf 100644 Binary files a/html/classcore_1_1TCPSocket__inherit__graph.png 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 index aabbe9f..0ed946a 100644 --- a/html/classcore_1_1TLSServer-members.html +++ b/html/classcore_1_1TLSServer-members.html @@ -1,9 +1,9 @@ - + - + My Project: Member List @@ -29,18 +29,21 @@
    - + +/* @license-end */
    active (defined in core::Socket)core::Socket blackListcore::TCPServer - bufferSize (defined in core::Socket)core::Socket - check(std::string request)core::Commandvirtual - commandscore::TCPServer - connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket - ctx (defined in core::TLSServer)core::TLSServer - ePoll (defined in core::Socket)core::Socketprotected - eventReceived(struct epoll_event event)core::Socket + check(std::string request)core::Commandvirtual + commandscore::TCPServer + connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket + ctx (defined in core::TLSServer)core::TLSServer + ePoll (defined in core::Socket)core::Socketprotected + eventReceived(struct epoll_event event, pid_t threadId)core::Socket + getBufferSize() (defined in core::Socket)core::Socketprotected getDescriptor()core::Socket getName() (defined in core::Command)core::Command getSocketAccept() (defined in core::TLSServer)core::TLSServer @@ -88,23 +91,23 @@ $(function() { onDataReceived(std::string data) overridecore::TCPServerprotectedvirtual onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual onRegister()core::Socketvirtual - onRegistered() (defined in core::Socket)core::Socketvirtual - onUnregister()core::Socketvirtual - output(TCPSession *session)core::TCPServer - core::TCPSocket::output(std::stringstream &out)core::TCPSocketvirtual - core::Command::output(Session *session)core::Commandvirtual - processCommand(std::string command, TCPSession *session, std::stringstream &data) overridecore::TCPServerprotectedvirtual - receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual - removeFromSessionList(TCPSession *session) (defined in core::TCPServer)core::TCPServer - sessionErrorHandler(std::string errorString, std::stringstream &out) (defined in core::TCPServer)core::TCPServervirtual - sessionscore::TCPServer - setBufferSize(int length) (defined in core::Socket)core::Socketprotected - setDescriptor(int descriptor)core::Socket - setName(std::string name)core::Command - shutdown(std::string text="unknown")core::Socket + onRegistered()core::Socketvirtual + onUnregister() (defined in core::Socket)core::Socketvirtual + onUnregistered()core::Socketvirtual + output(TCPSession *session)core::TCPServer + core::TCPSocket::output(std::stringstream &out)core::TCPSocketvirtual + core::Command::output(Session *session)core::Commandvirtual + processCommand(std::string command, TCPSession *session, std::stringstream &data) overridecore::TCPServerprotectedvirtual + receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual + removeFromSessionList(TCPSession *session) (defined in core::TCPServer)core::TCPServer + sessionErrorHandler(std::string errorString, std::stringstream &out) (defined in core::TCPServer)core::TCPServervirtual + sessionscore::TCPServer + setBufferSize(int length) (defined in core::Socket)core::Socketprotected + setDescriptor(int descriptor)core::Socket + setName(std::string name)core::Command shutDown (defined in core::Socket)core::Socketprotected - Socket(EPoll &ePoll) (defined in core::Socket)core::Socket - Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket + 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 @@ -114,7 +117,7 @@ $(function() { whiteListcore::TCPServer write(std::string data)core::Socket write(char *buffer, int length) (defined in core::Socket)core::Socket - ~Socket() (defined in core::Socket)core::Socket + ~Socket()core::Socket ~TCPServer()core::TCPServer ~TCPSocket() (defined in core::TCPSocket)core::TCPSocket ~TLSServer()core::TLSServer @@ -123,7 +126,7 @@ $(function() { diff --git a/html/classcore_1_1TLSServer.html b/html/classcore_1_1TLSServer.html index 8053299..d4ffc52 100644 --- a/html/classcore_1_1TLSServer.html +++ b/html/classcore_1_1TLSServer.html @@ -1,9 +1,9 @@ - + - + My Project: core::TLSServer Class Reference @@ -29,18 +29,21 @@
    - + +/* @license-end */
    Inheritance graph
    - - - - - - + + + + + +
    [legend]
    @@ -90,15 +93,16 @@ Collaboration diagram for core::TLSServer:
    Collaboration graph
    - - - - - - - - - + + + + + + + + + +
    [legend]
    @@ -141,12 +145,10 @@ void  - - - - + + + + @@ -154,11 +156,12 @@ void  - + - - - + + + - + +virtual void  + - - + + + + @@ -209,10 +216,6 @@ SSL_CTX * IPAddress  - - - @@ -235,6 +238,9 @@ Additional Inherited Members + + @@ -318,7 +324,7 @@ bool 
    connect (virtual void output (std::stringstream &out)
     
    - Public Member Functions inherited from core::Socket
    Socket (EPoll &ePoll)
     
    Socket (EPoll &ePoll, std::string text)
     
     Socket (EPoll &ePoll, std::string text="")
     
     ~Socket ()
     
    void shutdown (std::string text="unknown")
     
    void setDescriptor (int descriptor)
    connect ( 
    int getDescriptor ()
     Get the descriptor for the socket.
     Get the descriptor for the socket.
    +
     
    bool eventReceived (struct epoll_event event)
     Parse epoll event and call specified callbacks. More...
     
    bool eventReceived (struct epoll_event event, pid_t threadId)
     Parse epoll event and call specified callbacks. More...
     
    int write (std::string data)
     
    @@ -168,14 +171,18 @@ void write (char *buff void output (std::stringstream &out)
     
    virtual void onRegister ()
     Called when the socket has finished registering with the epoll processing. More...
     Called before the socket has registered with the epoll processing. More...
     
    -virtual void onRegistered ()
    onRegistered ()
     Called after the socket has been registered with epoll processing.
     
    virtual void onUnregister ()
     Called when the socket has finished unregistering for the epoll processing. More...
    +virtual void onUnregister ()
     
    virtual void onUnregistered ()
     Called when the socket has finished unregistering for the epoll processing. More...
     
    bool needsToWrite ()
     
    ctx
    ipAddress
     
    - Public Attributes inherited from core::Socket
    -class {
    bufferSize
     
    bool active = false
     
    void setBufferSize (int length)
     
    +int getBufferSize ()
     
    virtual void onDataReceived (char *buffer, int len)
     
    shutDown = false< diff --git a/html/classcore_1_1TLSServer__coll__graph.map b/html/classcore_1_1TLSServer__coll__graph.map index 2c00328..39c33a2 100644 --- a/html/classcore_1_1TLSServer__coll__graph.map +++ b/html/classcore_1_1TLSServer__coll__graph.map @@ -1,11 +1,12 @@ - - - - - - - - - + + + + + + + + + + diff --git a/html/classcore_1_1TLSServer__coll__graph.md5 b/html/classcore_1_1TLSServer__coll__graph.md5 index 7326fe9..5afa3b3 100644 --- a/html/classcore_1_1TLSServer__coll__graph.md5 +++ b/html/classcore_1_1TLSServer__coll__graph.md5 @@ -1 +1 @@ -dc2f13eae5efc742871c3504408067f5 \ No newline at end of file +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 index 4234020..ba90091 100644 Binary files a/html/classcore_1_1TLSServer__coll__graph.png 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 index 7b1784f..3ba9c06 100644 --- a/html/classcore_1_1TLSServer__inherit__graph.map +++ b/html/classcore_1_1TLSServer__inherit__graph.map @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/html/classcore_1_1TLSServer__inherit__graph.md5 b/html/classcore_1_1TLSServer__inherit__graph.md5 index 2d32aee..c990953 100644 --- a/html/classcore_1_1TLSServer__inherit__graph.md5 +++ b/html/classcore_1_1TLSServer__inherit__graph.md5 @@ -1 +1 @@ -e34668e950c9a9ad7c2c591f08173e97 \ No newline at end of file +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 index 45a1508..d903a90 100644 Binary files a/html/classcore_1_1TLSServer__inherit__graph.png 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 index 60b4b6d..53662d8 100644 --- a/html/classcore_1_1TLSSession-members.html +++ b/html/classcore_1_1TLSSession-members.html @@ -1,9 +1,9 @@ - + - + My Project: Member List @@ -29,18 +29,21 @@
    - + +/* @license-end */
    This is the complete list of members for core::TLSSession, including all inherited members.

    - - - - + + + + - + - - + + + + - + - - - + + + - - - - - + + + - + @@ -115,7 +118,7 @@ $(function() { diff --git a/html/classcore_1_1TLSSession.html b/html/classcore_1_1TLSSession.html index 903fd84..0b75d9a 100644 --- a/html/classcore_1_1TLSSession.html +++ b/html/classcore_1_1TLSSession.html @@ -1,9 +1,9 @@ - + - +My Project: core::TLSSession Class Reference @@ -29,18 +29,21 @@
    active (defined in core::Socket)core::Socket
    bufferSize (defined in core::Socket)core::Socket
    connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
    ePoll (defined in core::Socket)core::Socketprotected
    eventReceived(struct epoll_event event)core::Socket
    connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
    ePoll (defined in core::Socket)core::Socketprotected
    eventReceived(struct epoll_event event, pid_t threadId)core::Socket
    getBufferSize() (defined in core::Socket)core::Socketprotected
    getDescriptor()core::Socket
    grab (defined in core::TCPSession)core::TCPSession
    ipAddress (defined in core::TCPSocket)core::TCPSocket
    name (defined in core::Object)core::Object
    needsToWrite() (defined in core::Socket)core::Socket
    onConnected(std::stringstream &out)core::TCPSessionprotectedvirtual
    onConnected()core::TCPSessionprotectedvirtual
    onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
    onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
    onRegister()core::TLSSessionprotectedvirtual
    onRegistered() (defined in core::TLSSession)core::TLSSessionprotectedvirtual
    onUnregister()core::Socketvirtual
    onRegistered()core::TLSSessionprotectedvirtual
    onUnregister() (defined in core::Socket)core::Socketvirtual
    onUnregistered()core::Socketvirtual
    outcore::TCPSession
    output(std::stringstream &out)core::TLSSessionvirtual
    protocol(std::stringstream &out, std::string data) overridecore::TLSSessionvirtual
    protocol(std::string data) overridecore::TLSSessionvirtual
    receiveData(char *buffer, int bufferLength) overridecore::TLSSessionprotectedvirtual
    send(std::string data)core::TCPSession
    sendToAll(std::string data)core::TCPSession
    sendToAll(SessionFilter filter, std::string data)core::TCPSession
    send()core::TCPSession
    sendToAll()core::TCPSession
    sendToAll(SessionFilter filter)core::TCPSession
    server (defined in core::TCPSession)core::TCPSession
    setBufferSize(int length) (defined in core::Socket)core::Socketprotected
    setDescriptor(int descriptor)core::Socket
    shutdown(std::string text="unknown")core::Socket
    shutDown (defined in core::Socket)core::Socketprotected
    Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
    Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
    tag (defined in core::Object)core::Object
    TCPSession(EPoll &ePoll, TCPServer &server) (defined in core::TCPSession)core::TCPSession
    TCPSession(EPoll &ePoll, TCPServer &server, std::string text) (defined in core::TCPSession)core::TCPSession
    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
    TLSSession(EPoll &ePoll, TCPServer &server) (defined in core::TLSSession)core::TLSSession
    write(std::string data)core::Socket
    write(char *buffer, int length) (defined in core::Socket)core::Socket
    ~Socket() (defined in core::Socket)core::Socket
    ~Socket()core::Socket
    ~TCPSession() (defined in core::TCPSession)core::TCPSession
    ~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
    ~TLSSession() (defined in core::TLSSession)core::TLSSession
    - + +/* @license-end */
    Inheritance graph
    - - - - - - + + + + +
    [legend]
    @@ -90,16 +92,17 @@ Collaboration diagram for core::TLSSession:
    Collaboration graph
    - - - - - - - - - - + + + + + + + + + + +
    [legend]
    @@ -108,23 +111,20 @@ Public Member Functions - + - - + + - - - - - - - - - - + + + + + + + + @@ -136,12 +136,10 @@ Public Member Functions void  - - - - + + + + @@ -149,11 +147,12 @@ void  - + - - - + + + - - + + + + @@ -174,21 +176,25 @@ Protected Member Functions - + +void  + - - + + + + @@ -199,6 +205,8 @@ Additional Inherited Members + + @@ -207,10 +215,6 @@ Additional Inherited MembersIPAddress  - - - @@ -257,10 +261,10 @@ bool 
     TLSSession (EPoll &ePoll, TCPServer &server)
     
    virtual void output (std::stringstream &out)
    virtual void output (std::stringstream &out)
     
    virtual void protocol (std::stringstream &out, std::string data) override
     
    virtual void protocol (std::string data) override
     
    - Public Member Functions inherited from core::TCPSession
    TCPSession (EPoll &ePoll, TCPServer &server)
     
    TCPSession (EPoll &ePoll, TCPServer &server, std::string text)
     
    void send (std::string data)
     
    void sendToAll (std::string data)
     
    void sendToAll (SessionFilter filter, std::string data)
     
    TCPSession (EPoll &ePoll, TCPServer &server, std::string text="")
     
    void send ()
     
    void sendToAll ()
     
    void sendToAll (SessionFilter filter)
     
    - Public Member Functions inherited from core::TCPSocket
     TCPSocket (EPoll &ePoll)
    connect (IPAddress &address)
     
    - Public Member Functions inherited from core::Socket
    Socket (EPoll &ePoll)
     
    Socket (EPoll &ePoll, std::string text)
     
     Socket (EPoll &ePoll, std::string text="")
     
     ~Socket ()
     
    void shutdown (std::string text="unknown")
     
    void setDescriptor (int descriptor)
    connect ( 
    int getDescriptor ()
     Get the descriptor for the socket.
     Get the descriptor for the socket.
    +
     
    bool eventReceived (struct epoll_event event)
     Parse epoll event and call specified callbacks. More...
     
    bool eventReceived (struct epoll_event event, pid_t threadId)
     Parse epoll event and call specified callbacks. More...
     
    int write (std::string data)
     
    @@ -162,9 +161,12 @@ void write (char *buff
    void output (std::stringstream &out)
     
    virtual void onUnregister ()
     Called when the socket has finished unregistering for the epoll processing. More...
    +virtual void onUnregister ()
     
    virtual void onUnregistered ()
     Called when the socket has finished unregistering for the epoll processing. More...
     
    bool needsToWrite ()
     
    void receiveData (char *buffer, int bufferLength) override
     
    void onRegister ()
     Called when the socket has finished registering with the epoll processing. More...
     Called before the socket has registered with the epoll processing. More...
     
    -void onRegistered ()
    onRegistered ()
     Called after the socket has been registered with epoll processing.
     
    - Protected Member Functions inherited from core::TCPSession
    virtual void onDataReceived (std::string data) override
     Called when data is received from the socket. More...
     
    virtual void onConnected (std::stringstream &out)
     
    virtual void onConnected ()
     
    - Protected Member Functions inherited from core::Socket
    void setBufferSize (int length)
     
    +int getBufferSize ()
     
    virtual void onDataReceived (char *buffer, int len)
     
    Commandgrab = NULL
     
    std::stringstream out
     
    TCPServerserver
     
    ipAddress
     
    - Public Attributes inherited from core::Socket
    -class {
    bufferSize
     
    bool active = false
     
    shutDown = false<
    -

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

    +

    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::TCPSession.

    +

    Reimplemented from core::Socket.

    @@ -293,8 +297,8 @@ bool shutDown = false< - -

    ◆ protocol()

    + +

    ◆ protocol()

    @@ -305,19 +309,9 @@ bool shutDown = false< void core::TLSSession::protocol ( - std::stringstream &  - out, - - - - std::string  - data  - - + data) - ) - @@ -328,9 +322,7 @@ bool shutDown = false<

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

    -

    Reimplemented from core::TCPSession.

    - -

    Reimplemented in core::ConsoleSession.

    +

    Reimplemented from core::TCPSession.

    @@ -382,7 +374,7 @@ bool shutDown = false< diff --git a/html/classcore_1_1TLSSession__coll__graph.map b/html/classcore_1_1TLSSession__coll__graph.map index e9b0b75..a1c3451 100644 --- a/html/classcore_1_1TLSSession__coll__graph.map +++ b/html/classcore_1_1TLSSession__coll__graph.map @@ -1,12 +1,13 @@ - - - - - - - - - - + + + + + + + + + + + diff --git a/html/classcore_1_1TLSSession__coll__graph.md5 b/html/classcore_1_1TLSSession__coll__graph.md5 index 8fb3f55..563cae4 100644 --- a/html/classcore_1_1TLSSession__coll__graph.md5 +++ b/html/classcore_1_1TLSSession__coll__graph.md5 @@ -1 +1 @@ -bedfc0cbd5c9342939ccd53d02abe177 \ No newline at end of file +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 index 45078ec..dafd09c 100644 Binary files a/html/classcore_1_1TLSSession__coll__graph.png 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 index d274b1c..119460b 100644 --- a/html/classcore_1_1TLSSession__inherit__graph.map +++ b/html/classcore_1_1TLSSession__inherit__graph.map @@ -1,8 +1,7 @@ - - - - - - + + + + + diff --git a/html/classcore_1_1TLSSession__inherit__graph.md5 b/html/classcore_1_1TLSSession__inherit__graph.md5 index 9ae11ec..c2fc049 100644 --- a/html/classcore_1_1TLSSession__inherit__graph.md5 +++ b/html/classcore_1_1TLSSession__inherit__graph.md5 @@ -1 +1 @@ -54263034a10e7fe01ef882e41c86688d \ No newline at end of file +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 index 1a3b339..a1d9213 100644 Binary files a/html/classcore_1_1TLSSession__inherit__graph.png 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 index 9e78b10..7de2dd6 100644 --- a/html/classcore_1_1TerminalSession-members.html +++ b/html/classcore_1_1TerminalSession-members.html @@ -1,9 +1,9 @@ - + - + My Project: Member List @@ -29,18 +29,21 @@ - + +/* @license-end */
    This is the complete list of members for core::TerminalSession, including all inherited members.

    - - - - - - + + + + + + @@ -83,53 +86,50 @@ $(function() { - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - + + + + - + -
    active (defined in core::Socket)core::Socket
    bufferSize (defined in core::Socket)core::Socket
    clear() (defined in core::TerminalSession)core::TerminalSession
    clearEOL() (defined in core::TerminalSession)core::TerminalSession
    connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
    ePoll (defined in core::Socket)core::Socketprotected
    eventReceived(struct epoll_event event)core::Socket
    clear()core::TerminalSession
    clearEOL()core::TerminalSession
    connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
    ePoll (defined in core::Socket)core::Socketprotected
    eventReceived(struct epoll_event event, pid_t threadId)core::Socket
    getBufferSize() (defined in core::Socket)core::Socketprotected
    getDescriptor()core::Socket
    getLines() (defined in core::TerminalSession)core::TerminalSession
    grab (defined in core::TCPSession)core::TCPSession
    name (defined in core::Object)core::Object
    needsToWrite() (defined in core::Socket)core::Socket
    NextLine(int lines) (defined in core::TerminalSession)core::TerminalSession
    onConnected(std::stringstream &out)core::TCPSessionprotectedvirtual
    onConnected()core::TCPSessionprotectedvirtual
    onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
    onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
    onRegister()core::TLSSessionprotectedvirtual
    onRegistered() (defined in core::TLSSession)core::TLSSessionprotectedvirtual
    onUnregister()core::Socketvirtual
    out (defined in core::TerminalSession)core::TerminalSession
    output(std::stringstream &out)core::TLSSessionvirtual
    PreviousLine(int lines) (defined in core::TerminalSession)core::TerminalSession
    protocol(std::stringstream &out, std::string data) overridecore::TLSSessionvirtual
    receiveData(char *buffer, int bufferLength) overridecore::TLSSessionprotectedvirtual
    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(std::string data)core::TCPSession
    sendToAll(std::string data)core::TCPSession
    sendToAll(SessionFilter filter, std::string data)core::TCPSession
    server (defined in core::TCPSession)core::TCPSession
    setBackColor(int color) (defined in core::TerminalSession)core::TerminalSession
    setBufferSize(int length) (defined in core::Socket)core::Socketprotected
    setColor(int color) (defined in core::TerminalSession)core::TerminalSession
    setCursorLocation(int x, int y) (defined in core::TerminalSession)core::TerminalSession
    setDescriptor(int descriptor)core::Socket
    shutdown(std::string text="unknown")core::Socket
    onRegister()core::Socketvirtual
    onRegistered() overridecore::TCPSessionprotectedvirtual
    onUnregister() (defined in core::Socket)core::Socketvirtual
    onUnregistered()core::Socketvirtual
    outcore::TCPSession
    output(std::stringstream &data)core::TCPSessionvirtual
    PreviousLine(int lines) (defined in core::TerminalSession)core::TerminalSession
    protocol(std::string data)core::TCPSessionprotectedvirtual
    receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
    restoreCursor() (defined in core::TerminalSession)core::TerminalSession
    saveCursor() (defined in core::TerminalSession)core::TerminalSession
    scrollArea(int start, int end) (defined in core::TerminalSession)core::TerminalSession
    send()core::TCPSession
    sendToAll()core::TCPSession
    sendToAll(SessionFilter filter)core::TCPSession
    server (defined in core::TCPSession)core::TCPSession
    setBackColor(int color) (defined in core::TerminalSession)core::TerminalSession
    setBufferSize(int length) (defined in core::Socket)core::Socketprotected
    setColor(int color) (defined in core::TerminalSession)core::TerminalSession
    setCursorLocation(int x, int y)core::TerminalSession
    setDescriptor(int descriptor)core::Socket
    shutDown (defined in core::Socket)core::Socketprotected
    Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
    Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
    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) (defined in core::TCPSession)core::TCPSession
    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
    TLSSession(EPoll &ePoll, TCPServer &server) (defined in core::TLSSession)core::TLSSession
    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
    write(std::string data)core::Socket
    write(char *buffer, int length) (defined in core::Socket)core::Socket
    ~Socket() (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
    ~TLSSession() (defined in core::TLSSession)core::TLSSession
    diff --git a/html/classcore_1_1TerminalSession.html b/html/classcore_1_1TerminalSession.html index 783de48..3f9eeaf 100644 --- a/html/classcore_1_1TerminalSession.html +++ b/html/classcore_1_1TerminalSession.html @@ -1,9 +1,9 @@ - + - + My Project: core::TerminalSession Class Reference @@ -29,18 +29,21 @@ - + +/* @license-end */
    core::TerminalSession Class Reference
    @@ -75,12 +77,12 @@ Inheritance diagram for core::TerminalSession:
    Inheritance graph
    - - - - - - + + + + + +
    [legend]
    @@ -88,17 +90,17 @@ Collaboration diagram for core::TerminalSession:
    Collaboration graph
    - - - - - - - - - - - + + + + + + + + + + +
    [legend]
    @@ -110,14 +112,11 @@ Public Member Functions - + - + - + @@ -140,27 +139,18 @@ void  - - - - - - - - - - - - - - - - - + + + + + + + + + + @@ -172,12 +162,10 @@ void  - - - - + + + + @@ -185,11 +173,12 @@ void  - + - - - + + + - - + + + + + + +
    int getLines ()
     
    -void clear ()
    void clear ()
     
    -void clearEOL ()
    void clearEOL ()
     
    -void setCursorLocation (int x, int y)
    void setCursorLocation (int x, int y)
     
    void setColor (int color)
    PreviousLine (int
    void scrollArea (int start, int end)
     
    - Public Member Functions inherited from core::TLSSession
    TLSSession (EPoll &ePoll, TCPServer &server)
     
    virtual void output (std::stringstream &out)
     
    virtual void protocol (std::stringstream &out, std::string data) override
     
    - Public Member Functions inherited from core::TCPSession
    TCPSession (EPoll &ePoll, TCPServer &server)
     
    TCPSession (EPoll &ePoll, TCPServer &server, std::string text)
     
    void send (std::string data)
     
    void sendToAll (std::string data)
     
    void sendToAll (SessionFilter filter, std::string data)
     
    TCPSession (EPoll &ePoll, TCPServer &server, std::string text="")
     
    virtual void output (std::stringstream &data)
     
    void send ()
     
    void sendToAll ()
     
    void sendToAll (SessionFilter filter)
     
    - Public Member Functions inherited from core::TCPSocket
     TCPSocket (EPoll &ePoll)
    scrollArea (int s void connect (IPAddress &address)
     
    - Public Member Functions inherited from core::Socket
    Socket (EPoll &ePoll)
     
    Socket (EPoll &ePoll, std::string text)
     
     Socket (EPoll &ePoll, std::string text="")
     
     ~Socket ()
     
    void shutdown (std::string text="unknown")
     
    void setDescriptor (int descriptor)
    connect ( 
    int getDescriptor ()
     Get the descriptor for the socket.
     Get the descriptor for the socket.
    +
     
    bool eventReceived (struct epoll_event event)
     Parse epoll event and call specified callbacks. More...
     
    bool eventReceived (struct epoll_event event, pid_t threadId)
     Parse epoll event and call specified callbacks. More...
     
    int write (std::string data)
     
    @@ -198,22 +187,27 @@ void write (char *buff
    void output (std::stringstream &out)
     
    virtual void onUnregister ()
     Called when the socket has finished unregistering for the epoll processing. More...
    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 ()
     
    - - - + + + @@ -222,10 +216,6 @@ std::stringstream  - - - @@ -236,31 +226,30 @@ std::string < -

    -Public Attributes

    -std::stringstream out
     

    +Additional Inherited Members

    - Public Attributes inherited from core::TCPSession
    Commandgrab = NULL
     
    std::stringstream out
     
    TCPServerserver
     
    out< IPAddress ipAddress
     
    - Public Attributes inherited from core::Socket
    -class {
    bufferSize
     
    bool active = false
     
    name
    std::string tag
     
    - - - - - - - - - - - + + + + + + + + + + + @@ -269,6 +258,72 @@ virtual void 

    -Additional Inherited Members

    - Protected Member Functions inherited from core::TLSSession
    void receiveData (char *buffer, int bufferLength) override
     
    void onRegister ()
     Called when the socket has finished registering with the epoll processing. More...
     
    -void onRegistered ()
     
    - Protected Member Functions inherited from core::TCPSession
    virtual void onDataReceived (std::string data) override
     Called when data is received from the socket. More...
     
    virtual void onConnected (std::stringstream &out)
     
    +virtual void onRegistered () override
     Called after the socket has been registered with epoll processing.
     
    virtual void onConnected ()
     
    virtual void protocol (std::string data)
     
    - Protected Member Functions inherited from core::Socket
    void setBufferSize (int length)
     
    +int getBufferSize ()
     
    virtual void onDataReceived (char *buffer, int len)
     
    virtual void receiveData (char *buffer, int bufferLength)
     
    - Protected Attributes inherited from core::Socket
    EPollePoll
    onDataReceive bool shutDown = false
     
    +

    Member Function Documentation

    + +

    ◆ clear()

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

    Clear the display.

    + +
    +
    + +

    ◆ clearEOL()

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

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

    + +
    +
    + +

    ◆ setCursorLocation()

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

    Set the location of the cursor on the display.

    + +
    +

    The documentation for this class was generated from the following files:
    • TerminalSession.h
    • TerminalSession.cpp
    • @@ -278,7 +333,7 @@ bool shutDown = false< diff --git a/html/classcore_1_1TerminalSession__coll__graph.map b/html/classcore_1_1TerminalSession__coll__graph.map index 4a36ad3..b17ea3c 100644 --- a/html/classcore_1_1TerminalSession__coll__graph.map +++ b/html/classcore_1_1TerminalSession__coll__graph.map @@ -1,13 +1,13 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/html/classcore_1_1TerminalSession__coll__graph.md5 b/html/classcore_1_1TerminalSession__coll__graph.md5 index cd7459c..80cfa26 100644 --- a/html/classcore_1_1TerminalSession__coll__graph.md5 +++ b/html/classcore_1_1TerminalSession__coll__graph.md5 @@ -1 +1 @@ -0f013d9bdfd886fcb0ec593fbba6edda \ No newline at end of file +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 index e4a0475..7d4f399 100644 Binary files a/html/classcore_1_1TerminalSession__coll__graph.png 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 index 2f809ab..114596d 100644 --- a/html/classcore_1_1TerminalSession__inherit__graph.map +++ b/html/classcore_1_1TerminalSession__inherit__graph.map @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/html/classcore_1_1TerminalSession__inherit__graph.md5 b/html/classcore_1_1TerminalSession__inherit__graph.md5 index 26b51a0..0f1c7c7 100644 --- a/html/classcore_1_1TerminalSession__inherit__graph.md5 +++ b/html/classcore_1_1TerminalSession__inherit__graph.md5 @@ -1 +1 @@ -d5829035a834b57087414d9ce43d9dd0 \ No newline at end of file +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 index f5370a2..993ebe7 100644 Binary files a/html/classcore_1_1TerminalSession__inherit__graph.png 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 index 6cae7dd..a3e77c6 100644 --- a/html/classcore_1_1Thread-members.html +++ b/html/classcore_1_1Thread-members.html @@ -1,9 +1,9 @@ - + - + My Project: Member List @@ -29,18 +29,21 @@ - + +/* @license-end */ - + +/* @license-end */
      Inheritance graph
      - + +
      [legend]
      @@ -84,7 +88,8 @@ Collaboration diagram for core::Thread:
      Collaboration graph
      - + +
      [legend]
      @@ -152,7 +157,7 @@ std::string  diff --git a/html/classcore_1_1Thread__coll__graph.map b/html/classcore_1_1Thread__coll__graph.map index a6c65e3..fed42ce 100644 --- a/html/classcore_1_1Thread__coll__graph.map +++ b/html/classcore_1_1Thread__coll__graph.map @@ -1,3 +1,4 @@ - + + diff --git a/html/classcore_1_1Thread__coll__graph.md5 b/html/classcore_1_1Thread__coll__graph.md5 index a99c075..4a0cc87 100644 --- a/html/classcore_1_1Thread__coll__graph.md5 +++ b/html/classcore_1_1Thread__coll__graph.md5 @@ -1 +1 @@ -d6a2b4a77e8d11092648ef962240b7cf \ No newline at end of file +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 index c39d419..8caf445 100644 Binary files a/html/classcore_1_1Thread__coll__graph.png 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 index a6c65e3..fed42ce 100644 --- a/html/classcore_1_1Thread__inherit__graph.map +++ b/html/classcore_1_1Thread__inherit__graph.map @@ -1,3 +1,4 @@ - + + diff --git a/html/classcore_1_1Thread__inherit__graph.md5 b/html/classcore_1_1Thread__inherit__graph.md5 index 81d9e81..4a0cc87 100644 --- a/html/classcore_1_1Thread__inherit__graph.md5 +++ b/html/classcore_1_1Thread__inherit__graph.md5 @@ -1 +1 @@ -729ea49a8b15bd0991afb3f277caa4f6 \ No newline at end of file +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 index c39d419..8caf445 100644 Binary files a/html/classcore_1_1Thread__inherit__graph.png 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 index ff76a21..af392a8 100644 --- a/html/classcore_1_1Timer-members.html +++ b/html/classcore_1_1Timer-members.html @@ -1,9 +1,9 @@ - + - +My Project: Member List @@ -29,18 +29,21 @@
      tag
      - + +/* @license-end */
      This is the complete list of members for core::Timer, including all inherited members.

      - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - + +
      active (defined in core::Socket)core::Socketprivate
      bufferSize (defined in core::Socket)core::Socketprivate
      clearTimer()core::Timer
      ePoll (defined in core::Socket)core::Socketprivate
      eventReceived(struct epoll_event event)core::Socketprivate
      getDescriptor()core::Socketprivate
      getElapsed()core::Timer
      getEpoch() (defined in core::Timer)core::Timer
      name (defined in core::Object)core::Objectprivate
      needsToWrite() (defined in core::Socket)core::Socketprivate
      onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprivatevirtual
      onRegister()core::Socketprivatevirtual
      onRegistered() (defined in core::Socket)core::Socketprivatevirtual
      onTimeout()=0core::Timerprotectedpure virtual
      onUnregister()core::Socketprivatevirtual
      output(std::stringstream &out) (defined in core::Socket)core::Socketprivate
      receiveData(char *buffer, int bufferLength)core::Socketprivatevirtual
      setBufferSize(int length) (defined in core::Socket)core::Socketprivate
      setDescriptor(int descriptor)core::Socketprivate
      getElapsed()core::Timer
      getEpoch() (defined in core::Timer)core::Timer
      onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprivatevirtual
      onTimeout()=0core::Timerprotectedpure virtual
      setTimer(double delay)core::Timer
      shutdown(std::string text="unknown")core::Socketprivate
      shutDown (defined in core::Socket)core::Socketprivate
      Socket(EPoll &ePoll) (defined in core::Socket)core::Socketprivate
      Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socketprivate
      tag (defined in core::Object)core::Objectprivate
      Timer(EPoll &ePoll) (defined in core::Timer)core::Timer
      Timer(EPoll &ePoll, double delay) (defined in core::Timer)core::Timer
      write(std::string data)core::Socketprivate
      write(char *buffer, int length) (defined in core::Socket)core::Socketprivate
      ~Socket() (defined in core::Socket)core::Socketprivate
      Timer(EPoll &ePoll) (defined in core::Timer)core::Timer
      Timer(EPoll &ePoll, double delay) (defined in core::Timer)core::Timer
      ~Timer() (defined in core::Timer)core::Timer
      diff --git a/html/classcore_1_1Timer.html b/html/classcore_1_1Timer.html index ea6883a..dcf2e38 100644 --- a/html/classcore_1_1Timer.html +++ b/html/classcore_1_1Timer.html @@ -1,9 +1,9 @@ - + - + My Project: core::Timer Class Reference @@ -29,18 +29,21 @@ - + +/* @license-end */
      Inheritance graph
      - - + + +
      [legend]
      @@ -86,10 +90,11 @@ Collaboration diagram for core::Timer:
      Collaboration graph
      - - - - + + + + +
      [legend]
      @@ -217,7 +222,7 @@ Protected Member Functions diff --git a/html/classcore_1_1Timer__coll__graph.map b/html/classcore_1_1Timer__coll__graph.map index 6806beb..be1d1f9 100644 --- a/html/classcore_1_1Timer__coll__graph.map +++ b/html/classcore_1_1Timer__coll__graph.map @@ -1,6 +1,7 @@ - - - - + + + + + diff --git a/html/classcore_1_1Timer__coll__graph.md5 b/html/classcore_1_1Timer__coll__graph.md5 index 5180b00..ee1db5d 100644 --- a/html/classcore_1_1Timer__coll__graph.md5 +++ b/html/classcore_1_1Timer__coll__graph.md5 @@ -1 +1 @@ -946bfaa407adfc3cb9e7588cef0bc6c1 \ No newline at end of file +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 index 1703037..02ea3f0 100644 Binary files a/html/classcore_1_1Timer__coll__graph.png 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 index 78e07e3..7b1230e 100644 --- a/html/classcore_1_1Timer__inherit__graph.map +++ b/html/classcore_1_1Timer__inherit__graph.map @@ -1,4 +1,5 @@ - - + + + diff --git a/html/classcore_1_1Timer__inherit__graph.md5 b/html/classcore_1_1Timer__inherit__graph.md5 index a0c29aa..3063d9b 100644 --- a/html/classcore_1_1Timer__inherit__graph.md5 +++ b/html/classcore_1_1Timer__inherit__graph.md5 @@ -1 +1 @@ -2531a94a4bd23c0bce2906846d2fb660 \ No newline at end of file +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 index 76b6c38..f0b6f2a 100644 Binary files a/html/classcore_1_1Timer__inherit__graph.png 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 index 9820c75..ef16138 100644 --- a/html/classcore_1_1UDPServerSocket-members.html +++ b/html/classcore_1_1UDPServerSocket-members.html @@ -1,9 +1,9 @@ - + - +My Project: Member List @@ -29,18 +29,21 @@
      - + +/* @license-end */
      This is the complete list of members for core::UDPServerSocket, including all inherited members.

      - - - - + + + + @@ -81,28 +84,28 @@ $(function() { - - - - - - - - - - - - + + + + + + + + + + + + - - + + - +
      active (defined in core::Socket)core::Socket
      bufferSize (defined in core::Socket)core::Socket
      check(std::string request)core::Commandvirtual
      ePoll (defined in core::Socket)core::Socketprotected
      eventReceived(struct epoll_event event)core::Socket
      check(std::string request)core::Commandvirtual
      ePoll (defined in core::Socket)core::Socketprotected
      eventReceived(struct epoll_event event, pid_t threadId)core::Socket
      getBufferSize() (defined in core::Socket)core::Socketprotected
      getDescriptor()core::Socket
      getName() (defined in core::Command)core::Command
      name (defined in core::Object)core::Object
      onDataReceived(std::string data) overridecore::UDPServerSocketprotectedvirtual
      onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
      onRegister()core::Socketvirtual
      onRegistered() (defined in core::Socket)core::Socketvirtual
      onUnregister()core::Socketvirtual
      output(std::stringstream &out) (defined in core::Socket)core::Socket
      core::Command::output(Session *session)core::Commandvirtual
      processCommand(std::string request, std::stringstream &data) (defined in core::UDPServerSocket)core::UDPServerSocketprotected
      core::Command::processCommand(std::string request, TCPSession *session, std::stringstream &data)core::Commandvirtual
      receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
      sessions (defined in core::UDPServerSocket)core::UDPServerSocketprotected
      setBufferSize(int length) (defined in core::Socket)core::Socketprotected
      setDescriptor(int descriptor)core::Socket
      setName(std::string name)core::Command
      shutdown(std::string text="unknown")core::Socket
      onRegistered()core::Socketvirtual
      onUnregister() (defined in core::Socket)core::Socketvirtual
      onUnregistered()core::Socketvirtual
      output(std::stringstream &out) (defined in core::Socket)core::Socket
      core::Command::output(Session *session)core::Commandvirtual
      processCommand(std::string request, std::stringstream &data) (defined in core::UDPServerSocket)core::UDPServerSocketprotected
      core::Command::processCommand(std::string request, TCPSession *session, std::stringstream &data)core::Commandvirtual
      receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
      sessions (defined in core::UDPServerSocket)core::UDPServerSocketprotected
      setBufferSize(int length) (defined in core::Socket)core::Socketprotected
      setDescriptor(int descriptor)core::Socket
      setName(std::string name)core::Command
      shutDown (defined in core::Socket)core::Socketprotected
      Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
      Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
      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
      UDPServerSocket(EPoll &ePoll, std::string url, short int port, std::string commandName) (defined in core::UDPServerSocket)core::UDPServerSocket
      UDPSocket(EPoll &ePoll) (defined in core::UDPSocket)core::UDPSocket
      write(std::string data)core::Socket
      write(char *buffer, int length) (defined in core::Socket)core::Socket
      ~Socket() (defined in core::Socket)core::Socket
      ~Socket()core::Socket
      ~UDPServerSocket() (defined in core::UDPServerSocket)core::UDPServerSocket
      ~UDPSocket() (defined in core::UDPSocket)core::UDPSocket
      @@ -110,7 +113,7 @@ $(function() { diff --git a/html/classcore_1_1UDPServerSocket.html b/html/classcore_1_1UDPServerSocket.html index ec8fbfc..f35a6d4 100644 --- a/html/classcore_1_1UDPServerSocket.html +++ b/html/classcore_1_1UDPServerSocket.html @@ -1,9 +1,9 @@ - + - + My Project: core::UDPServerSocket Class Reference @@ -29,18 +29,21 @@ - + +/* @license-end */
      Inheritance graph
      - - - - + + + + +
      [legend]
      @@ -89,11 +93,12 @@ Collaboration diagram for core::UDPServerSocket:
      Collaboration graph
      - - - - - + + + + + +
      [legend]
      @@ -107,12 +112,10 @@ Public Member Functions   - - - - + + + + @@ -120,11 +123,12 @@ Public Member Functions - + - - - + + + - + +virtual void  + - - + + + + @@ -161,7 +169,7 @@ std::string  - + @@ -170,6 +178,9 @@ int  + + @@ -192,10 +203,6 @@ bool  - - - @@ -257,7 +264,7 @@ std::string  diff --git a/html/classcore_1_1UDPServerSocket__coll__graph.map b/html/classcore_1_1UDPServerSocket__coll__graph.map index 35577b1..f980aa4 100644 --- a/html/classcore_1_1UDPServerSocket__coll__graph.map +++ b/html/classcore_1_1UDPServerSocket__coll__graph.map @@ -1,7 +1,8 @@ - - - - - + + + + + + diff --git a/html/classcore_1_1UDPServerSocket__coll__graph.md5 b/html/classcore_1_1UDPServerSocket__coll__graph.md5 index ff0577e..ee94436 100644 --- a/html/classcore_1_1UDPServerSocket__coll__graph.md5 +++ b/html/classcore_1_1UDPServerSocket__coll__graph.md5 @@ -1 +1 @@ -dba3a7b38e61712551de235c7031f22f \ No newline at end of file +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 index c3406fd..8969abe 100644 Binary files a/html/classcore_1_1UDPServerSocket__coll__graph.png 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 index 61dba60..1076af8 100644 --- a/html/classcore_1_1UDPServerSocket__inherit__graph.map +++ b/html/classcore_1_1UDPServerSocket__inherit__graph.map @@ -1,6 +1,7 @@ - - - - + + + + + diff --git a/html/classcore_1_1UDPServerSocket__inherit__graph.md5 b/html/classcore_1_1UDPServerSocket__inherit__graph.md5 index 8d080e0..e544e8a 100644 --- a/html/classcore_1_1UDPServerSocket__inherit__graph.md5 +++ b/html/classcore_1_1UDPServerSocket__inherit__graph.md5 @@ -1 +1 @@ -9742ee63ec5c55745178b400daa2e990 \ No newline at end of file +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 index 698c647..4e96892 100644 Binary files a/html/classcore_1_1UDPServerSocket__inherit__graph.png 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 index 4781e70..1199bce 100644 --- a/html/classcore_1_1UDPSocket-members.html +++ b/html/classcore_1_1UDPSocket-members.html @@ -1,9 +1,9 @@ - + - +My Project: Member List @@ -29,18 +29,21 @@
      UDPSocket (EPoll &ePoll)
       
      - Public Member Functions inherited from core::Socket
      Socket (EPoll &ePoll)
       
      Socket (EPoll &ePoll, std::string text)
       
       Socket (EPoll &ePoll, std::string text="")
       
       ~Socket ()
       
      void shutdown (std::string text="unknown")
       
      void setDescriptor (int descriptor)
       
      int getDescriptor ()
       Get the descriptor for the socket.
       Get the descriptor for the socket.
      +
       
      bool eventReceived (struct epoll_event event)
       Parse epoll event and call specified callbacks. More...
       
      bool eventReceived (struct epoll_event event, pid_t threadId)
       Parse epoll event and call specified callbacks. More...
       
      int write (std::string data)
       
      @@ -134,14 +138,18 @@ void write (char *buff void output (std::stringstream &out)
       
      virtual void onRegister ()
       Called when the socket has finished registering with the epoll processing. More...
       Called before the socket has registered with the epoll processing. More...
       
      -virtual void onRegistered ()
      onRegistered ()
       Called after the socket has been registered with epoll processing.
       
      virtual void onUnregister ()
       Called when the socket has finished unregistering for the epoll processing. More...
      +virtual void onUnregister ()
       
      virtual void onUnregistered ()
       Called when the socket has finished unregistering for the epoll processing. More...
       
      bool needsToWrite ()
       
      getName ()

      Protected Member Functions

      void onDataReceived (std::string data) override
       Called when data is received from the socket. More...
       Called when data is received from the socket. More...
       
      int processCommand (std::string request, std::stringstream &data)
      processCommand (st
      void setBufferSize (int length)
       
      +int getBufferSize ()
       
      virtual void onDataReceived (char *buffer, int len)
       
      shutDown = false<

      Additional Inherited Members

      - Public Attributes inherited from core::Socket
      -class {
      bufferSize
       
      bool active = false
       
      tag
      - + +/* @license-end */
      This is the complete list of members for core::UDPSocket, including all inherited members.

      - - - + + + - - - - - - - - - - + + + + + + + + + + - +
      active (defined in core::Socket)core::Socket
      bufferSize (defined in core::Socket)core::Socket
      ePoll (defined in core::Socket)core::Socketprotected
      eventReceived(struct epoll_event event)core::Socket
      ePoll (defined in core::Socket)core::Socketprotected
      eventReceived(struct epoll_event event, pid_t threadId)core::Socket
      getBufferSize() (defined in core::Socket)core::Socketprotected
      getDescriptor()core::Socket
      name (defined in core::Object)core::Object
      needsToWrite() (defined in core::Socket)core::Socket
      onDataReceived(std::string data)core::Socketprotectedvirtual
      onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
      onRegister()core::Socketvirtual
      onRegistered() (defined in core::Socket)core::Socketvirtual
      onUnregister()core::Socketvirtual
      output(std::stringstream &out) (defined in core::Socket)core::Socket
      receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
      setBufferSize(int length) (defined in core::Socket)core::Socketprotected
      setDescriptor(int descriptor)core::Socket
      shutdown(std::string text="unknown")core::Socket
      shutDown (defined in core::Socket)core::Socketprotected
      Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
      Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
      onRegistered()core::Socketvirtual
      onUnregister() (defined in core::Socket)core::Socketvirtual
      onUnregistered()core::Socketvirtual
      output(std::stringstream &out) (defined in core::Socket)core::Socket
      receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
      setBufferSize(int length) (defined in core::Socket)core::Socketprotected
      setDescriptor(int descriptor)core::Socket
      shutdown(std::string text="unknown")core::Socket
      shutDown (defined in core::Socket)core::Socketprotected
      Socket(EPoll &ePoll, std::string text="")core::Socket
      tag (defined in core::Object)core::Object
      UDPSocket(EPoll &ePoll) (defined in core::UDPSocket)core::UDPSocket
      write(std::string data)core::Socket
      write(char *buffer, int length) (defined in core::Socket)core::Socket
      ~Socket() (defined in core::Socket)core::Socket
      ~Socket()core::Socket
      ~UDPSocket() (defined in core::UDPSocket)core::UDPSocket
      diff --git a/html/classcore_1_1UDPSocket.html b/html/classcore_1_1UDPSocket.html index e3a7abf..060e59b 100644 --- a/html/classcore_1_1UDPSocket.html +++ b/html/classcore_1_1UDPSocket.html @@ -1,9 +1,9 @@ - + - + My Project: core::UDPSocket Class Reference @@ -29,18 +29,21 @@ - + +/* @license-end */
      Inheritance graph
      - - - + + + +
      [legend]
      @@ -84,10 +88,11 @@ Collaboration diagram for core::UDPSocket:
      Collaboration graph
      - - - - + + + + +
      [legend]
      @@ -97,12 +102,10 @@ Public Member Functions   - - - - + + + + @@ -110,11 +113,12 @@ Public Member Functions - + - - - + + + - + +virtual void  + - - + + + + @@ -139,10 +147,6 @@ bool  - - - @@ -157,6 +161,9 @@ std::string  + + @@ -182,7 +189,7 @@ bool 
      UDPSocket (EPoll &ePoll)
       
      - Public Member Functions inherited from core::Socket
      Socket (EPoll &ePoll)
       
      Socket (EPoll &ePoll, std::string text)
       
       Socket (EPoll &ePoll, std::string text="")
       
       ~Socket ()
       
      void shutdown (std::string text="unknown")
       
      void setDescriptor (int descriptor)
       
      int getDescriptor ()
       Get the descriptor for the socket.
       Get the descriptor for the socket.
      +
       
      bool eventReceived (struct epoll_event event)
       Parse epoll event and call specified callbacks. More...
       
      bool eventReceived (struct epoll_event event, pid_t threadId)
       Parse epoll event and call specified callbacks. More...
       
      int write (std::string data)
       
      @@ -124,14 +128,18 @@ void write (char *buff void output (std::stringstream &out)
       
      virtual void onRegister ()
       Called when the socket has finished registering with the epoll processing. More...
       Called before the socket has registered with the epoll processing. More...
       
      -virtual void onRegistered ()
      onRegistered ()
       Called after the socket has been registered with epoll processing.
       
      virtual void onUnregister ()
       Called when the socket has finished unregistering for the epoll processing. More...
      +virtual void onUnregister ()
       
      virtual void onUnregistered ()
       Called when the socket has finished unregistering for the epoll processing. More...
       
      bool needsToWrite ()
       
      needsToWrite ()

      Additional Inherited Members

      - Public Attributes inherited from core::Socket
      -class {
      bufferSize
       
      bool active = false
       
      tag void setBufferSize (int length)
       
      +int getBufferSize ()
       
      virtual void onDataReceived (std::string data)
       Called when data is received from the socket. More...
       
      shutDown = false< diff --git a/html/classcore_1_1UDPSocket__coll__graph.map b/html/classcore_1_1UDPSocket__coll__graph.map index b3f2b39..3225fe8 100644 --- a/html/classcore_1_1UDPSocket__coll__graph.map +++ b/html/classcore_1_1UDPSocket__coll__graph.map @@ -1,6 +1,7 @@ - - - - + + + + + diff --git a/html/classcore_1_1UDPSocket__coll__graph.md5 b/html/classcore_1_1UDPSocket__coll__graph.md5 index 82c9b35..296e836 100644 --- a/html/classcore_1_1UDPSocket__coll__graph.md5 +++ b/html/classcore_1_1UDPSocket__coll__graph.md5 @@ -1 +1 @@ -cbef520674c511d639297d08f56fbcc8 \ No newline at end of file +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 index b2de0d7..92d9905 100644 Binary files a/html/classcore_1_1UDPSocket__coll__graph.png 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 index ed12093..8047b96 100644 --- a/html/classcore_1_1UDPSocket__inherit__graph.map +++ b/html/classcore_1_1UDPSocket__inherit__graph.map @@ -1,5 +1,6 @@ - - - + + + + diff --git a/html/classcore_1_1UDPSocket__inherit__graph.md5 b/html/classcore_1_1UDPSocket__inherit__graph.md5 index 546f535..3fed8e9 100644 --- a/html/classcore_1_1UDPSocket__inherit__graph.md5 +++ b/html/classcore_1_1UDPSocket__inherit__graph.md5 @@ -1 +1 @@ -76a68a9621e5b07dc51a6660486270d6 \ No newline at end of file +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 index 0251c69..39d2b4c 100644 Binary files a/html/classcore_1_1UDPSocket__inherit__graph.png and b/html/classcore_1_1UDPSocket__inherit__graph.png differ diff --git a/html/classes.html b/html/classes.html index 01ed819..7d13b71 100644 --- a/html/classes.html +++ b/html/classes.html @@ -1,9 +1,9 @@ - + - + My Project: Class Index @@ -29,18 +29,21 @@
      - + +/* @license-end */ @@ -65,21 +68,49 @@ $(function() {
      c | e | i | o | s | t | u
      - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + +
        c  
      -
        i  
      -
        s  
      -
      TCPSession (core)   
        u  
      -
      TCPSocket (core)   
      Command (core)   INotify (core)   SessionFilter (core)   TerminalSession (core)   UDPServerSocket (core)   
      CommandList (core)   IPAddress (core)   Socket (core)   Thread (core)   UDPSocket (core)   
      ConsoleServer (core)   IPAddressList (core)   
        t  
      -
      Timer (core)   
      ConsoleSession (core)   
        o  
      -
      TLSServer (core)   
        i  
      +
        s  
      +
      TCPSession (core)   
        u  
      +
      TCPSocket (core)   
      Command (core)   INotify (core)   SessionFilter (core)   TerminalSession (core)   UDPServerSocket (core)   
      CommandList (core)   IPAddress (core)   Socket (core)   Thread (core)   UDPSocket (core)   
      ConsoleServer (core)   IPAddressList (core)   
        t  
      +
      Timer (core)   
      ConsoleSession (core)   
        o  
      +
      TLSServer (core)   
        e  
      -
      TCPServer (core)   TLSSession (core)   
      Object (core)   
      EPoll (core)   
      TCPServer (core)   TLSSession (core)   
      Object (core)   
      EPoll (core)   
      c | e | i | o | s | t | u
      @@ -88,7 +119,7 @@ $(function() { diff --git a/html/doxygen.css b/html/doxygen.css index 4f1ab91..73ecbb2 100644 --- a/html/doxygen.css +++ b/html/doxygen.css @@ -1,4 +1,4 @@ -/* The standard CSS for doxygen 1.8.13 */ +/* The standard CSS for doxygen 1.8.17 */ body, table, div, p, dl { font: 400 14px/22px Roboto,sans-serif; @@ -53,17 +53,24 @@ dt { font-weight: bold; } -div.multicol { +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; } @@ -80,6 +87,15 @@ p.endtd { margin-bottom: 2px; } +p.interli { +} + +p.interdd { +} + +p.intertd { +} + /* @end */ caption { @@ -134,12 +150,12 @@ a.qindex { a.qindexHL { font-weight: bold; background-color: #9CAFD4; - color: #ffffff; + color: #FFFFFF; border: 1px double #869DCA; } .contents a.qindexHL:visited { - color: #ffffff; + color: #FFFFFF; } a.el { @@ -163,6 +179,25 @@ 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; @@ -177,8 +212,8 @@ pre.fragment { } div.fragment { - padding: 0px; - margin: 4px 8px 4px 2px; + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; background-color: #FBFCFD; border: 1px solid #C4CFE5; } @@ -248,7 +283,7 @@ span.lineno a:hover { div.ah, span.ah { background-color: black; font-weight: bold; - color: #ffffff; + color: #FFFFFF; margin-bottom: 3px; margin-top: 3px; padding: 0.2em; @@ -324,7 +359,7 @@ img.formulaDsp { } -img.formulaInl { +img.formulaInl, img.inline { vertical-align: middle; } @@ -402,6 +437,13 @@ blockquote { 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 */ /* @@ -498,7 +540,7 @@ table.memberdecls { white-space: nowrap; } -.memItemRight { +.memItemRight, .memTemplItemRight { width: 100%; } @@ -666,17 +708,17 @@ dl.reflist dd { padding-left: 0px; } -.params .paramname, .retval .paramname { +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { font-weight: bold; vertical-align: top; } -.params .paramtype { +.params .paramtype, .tparams .paramtype { font-style: italic; vertical-align: top; } -.params .paramdir { +.params .paramdir, .tparams .paramdir { font-family: "courier new",courier,monospace; vertical-align: top; } @@ -1081,72 +1123,143 @@ div.headertitle padding: 5px 5px 5px 10px; } -dl -{ - padding: 0 0 0 10px; +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; } -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ -dl.section -{ +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.note -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #D0C000; +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; } -dl.warning, dl.attention -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #FF0000; +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; } -dl.pre, dl.post, dl.invariant -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00D000; +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.deprecated -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #505050; +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; } -dl.todo -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00C0E0; +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.test -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #3030E0; +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; } -dl.bug -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #C08050; +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 { @@ -1263,6 +1376,11 @@ div.toc { 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; @@ -1271,6 +1389,12 @@ div.toc li { 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; @@ -1300,6 +1424,26 @@ 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; @@ -1413,7 +1557,7 @@ tr.heading h2 { } #powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #ffffff; + border-top-color: #FFFFFF; border-width: 10px; margin: 0px -10px; } @@ -1441,7 +1585,7 @@ tr.heading h2 { } #powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #ffffff; + border-bottom-color: #FFFFFF; border-width: 10px; margin: 0px -10px; } @@ -1468,7 +1612,7 @@ tr.heading h2 { left: 100%; } #powerTip.e:after { - border-left-color: #ffffff; + border-left-color: #FFFFFF; border-width: 10px; top: 50%; margin-top: -10px; @@ -1484,7 +1628,7 @@ tr.heading h2 { right: 100%; } #powerTip.w:after { - border-right-color: #ffffff; + border-right-color: #FFFFFF; border-width: 10px; top: 50%; margin-top: -10px; @@ -1592,5 +1736,36 @@ 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/dynsections.js b/html/dynsections.js index 85e1836..ea0a7b3 100644 --- a/html/dynsections.js +++ b/html/dynsections.js @@ -1,3 +1,26 @@ +/* + @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'); @@ -15,7 +38,7 @@ function toggleVisibility(linkObj) summary.hide(); $(linkObj).removeClass('closed').addClass('opened'); $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } + } return false; } @@ -94,4 +117,4 @@ function toggleInherit(id) $(img).attr('src',src.substring(0,src.length-10)+'open.png'); } } - +/* @license-end */ diff --git a/html/files.html b/html/files.html index f13fcf9..f151f37 100644 --- a/html/files.html +++ b/html/files.html @@ -1,9 +1,9 @@ - + - + My Project: File List @@ -29,18 +29,21 @@ - + +/* @license-end */ @@ -92,7 +95,7 @@ $(function() { diff --git a/html/functions.html b/html/functions.html index 50e2d06..a249ce5 100644 --- a/html/functions.html +++ b/html/functions.html @@ -1,9 +1,9 @@ - + - + My Project: Class Members @@ -29,18 +29,21 @@ - + +/* @license-end */ @@ -78,6 +81,12 @@ $(function() {
    • check() : core::Command
    • +
    • clear() +: core::TerminalSession +
    • +
    • clearEOL() +: core::TerminalSession +
    • clearTimer() : core::Timer
    • @@ -93,8 +102,8 @@ $(function() { : core::EPoll
    • eventReceived() -: core::EPoll -, core::Socket +: core::EPoll +, core::Socket
    @@ -142,7 +151,7 @@ $(function() {

    - o -

    @@ -205,14 +221,17 @@ $(function() {

    - s -

    -

    - ~ -

      +

      - ~ -

      • ~EPoll() : core::EPoll
      • +
      • ~Socket() +: core::Socket +
      • ~TCPServer() : core::TCPServer
      • @@ -278,7 +303,7 @@ $(function() { diff --git a/html/functions_func.html b/html/functions_func.html index 8f9ec1c..15a13ec 100644 --- a/html/functions_func.html +++ b/html/functions_func.html @@ -1,9 +1,9 @@ - + - + My Project: Class Members - Functions @@ -29,18 +29,21 @@ - + +/* @license-end */ @@ -71,6 +74,12 @@ $(function() {
      • check() : core::Command
      • +
      • clear() +: core::TerminalSession +
      • +
      • clearEOL() +: core::TerminalSession +
      • clearTimer() : core::Timer
      • @@ -82,8 +91,8 @@ $(function() { : core::EPoll
      • eventReceived() -: core::EPoll -, core::Socket +: core::EPoll +, core::Socket
      @@ -124,7 +133,7 @@ $(function() {

      - o -

      @@ -187,10 +200,13 @@ $(function() {

      - s -

      -

      - ~ -

        +

        - ~ -

        • ~EPoll() : core::EPoll
        • +
        • ~Socket() +: core::Socket +
        • ~TCPServer() : core::TCPServer
        • @@ -254,7 +276,7 @@ $(function() { diff --git a/html/functions_vars.html b/html/functions_vars.html index b5ba7bb..449af92 100644 --- a/html/functions_vars.html +++ b/html/functions_vars.html @@ -1,9 +1,9 @@ - + - + My Project: Class Members - Variables @@ -29,18 +29,21 @@ - + +/* @license-end */ @@ -69,6 +72,9 @@ $(function() {
        • maxSockets : core::EPoll
        • +
        • out +: core::TCPSession +
        • sessions : core::TCPServer
        • @@ -81,7 +87,7 @@ $(function() { diff --git a/html/graph_legend.html b/html/graph_legend.html index 1625d6c..7042904 100644 --- a/html/graph_legend.html +++ b/html/graph_legend.html @@ -1,9 +1,9 @@ - + - + My Project: Graph Legend @@ -29,18 +29,21 @@ - + +/* @license-end */ @@ -63,11 +66,42 @@ $(function() {

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

          -

          Consider the following example:

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

          This will result in the following graph:

          -
          - -
          -

          The boxes in the above graph have the following meaning:

          +

          Consider the following example:

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

          This will result in the following graph:

          +

          The boxes in the above graph have the following meaning:

          • A filled gray box represents the struct or class for which the graph is generated.
          • @@ -96,7 +130,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem diff --git a/html/graph_legend.md5 b/html/graph_legend.md5 index a06ed05..8fcdccd 100644 --- a/html/graph_legend.md5 +++ b/html/graph_legend.md5 @@ -1 +1 @@ -387ff8eb65306fa251338d3c9bd7bfff \ No newline at end of file +f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file diff --git a/html/graph_legend.png b/html/graph_legend.png index 5ee31ee..98080f1 100644 Binary files a/html/graph_legend.png and b/html/graph_legend.png differ diff --git a/html/hierarchy.html b/html/hierarchy.html index 58d81aa..ed81d50 100644 --- a/html/hierarchy.html +++ b/html/hierarchy.html @@ -1,9 +1,9 @@ - + - + My Project: Class Hierarchy @@ -29,18 +29,21 @@
          - + +/* @license-end */ @@ -65,7 +68,7 @@ $(function() {

          Go to the graphical class hierarchy

          This inheritance list is sorted roughly, but not completely, alphabetically:
          -
          [detail level 1234567]
          +
          [detail level 123456]
          @@ -74,8 +77,8 @@ This inheritance list is sorted roughly, but not completely, alphabetically: - - + + @@ -84,9 +87,9 @@ This inheritance list is sorted roughly, but not completely, alphabetically: - - - + + + @@ -98,7 +101,7 @@ This inheritance list is sorted roughly, but not completely, alphabetically: diff --git a/html/index.html b/html/index.html index 04e75a5..6473b4e 100644 --- a/html/index.html +++ b/html/index.html @@ -1,9 +1,9 @@ - + - +My Project: Main Page @@ -29,18 +29,21 @@
           Ccore::IPAddressList
           CLogListener
           Ccore::ConsoleServer
           Ccore::CommandList
           Ccore::EPoll
           Ccore::TCPServer
           Ccore::TLSServer
           Ccore::ConsoleServer
           Ccore::ConsoleServer
           Ccore::TLSServer
           Ccore::UDPServerSocket
           Ccore::IPAddress
           Ccore::SessionFilter
           Ccore::TCPSocket
           Ccore::TCPServer
           Ccore::TCPSession
           Ccore::TLSSession
           Ccore::TerminalSession
           Ccore::ConsoleSession
           Ccore::TerminalSession
           Ccore::ConsoleSession
           Ccore::TLSSession
           Ccore::Timer
           Ccore::UDPSocket
           Ccore::UDPServerSocket
          - + +/* @license-end */ @@ -67,7 +70,7 @@ $(function() { diff --git a/html/inherit_graph_0.map b/html/inherit_graph_0.map index dc6efe7..3f9c96c 100644 --- a/html/inherit_graph_0.map +++ b/html/inherit_graph_0.map @@ -1,3 +1,3 @@ - + diff --git a/html/inherit_graph_0.md5 b/html/inherit_graph_0.md5 index 6eba192..d70011b 100644 --- a/html/inherit_graph_0.md5 +++ b/html/inherit_graph_0.md5 @@ -1 +1 @@ -de708c1231993bf9f0f52c06ee7a92b6 \ No newline at end of file +d019270962bf71fea9f33cb5799a0ff7 \ No newline at end of file diff --git a/html/inherit_graph_0.png b/html/inherit_graph_0.png index 670d0af..21a6f79 100644 Binary files a/html/inherit_graph_0.png and b/html/inherit_graph_0.png differ diff --git a/html/inherit_graph_1.map b/html/inherit_graph_1.map index 36b27aa..3952c05 100644 --- a/html/inherit_graph_1.map +++ b/html/inherit_graph_1.map @@ -1,22 +1,23 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + diff --git a/html/inherit_graph_1.md5 b/html/inherit_graph_1.md5 index c81ce1a..a4b534d 100644 --- a/html/inherit_graph_1.md5 +++ b/html/inherit_graph_1.md5 @@ -1 +1 @@ -466428688efc652c892391debcf1bb5c \ No newline at end of file +5e693242276d6785bf2eab4a026ad47c \ No newline at end of file diff --git a/html/inherit_graph_1.png b/html/inherit_graph_1.png index f264feb..816d531 100644 Binary files a/html/inherit_graph_1.png and b/html/inherit_graph_1.png differ diff --git a/html/inherits.html b/html/inherits.html index 844db1d..805febe 100644 --- a/html/inherits.html +++ b/html/inherits.html @@ -1,9 +1,9 @@ - + - + My Project: Class Hierarchy @@ -29,18 +29,21 @@ - + +/* @license-end */ @@ -65,33 +68,34 @@ $(function() { - -
          +
          - +
          +
          - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +
          @@ -100,7 +104,7 @@ $(function() { diff --git a/html/jquery.js b/html/jquery.js index f5343ed..103c32d 100644 --- a/html/jquery.js +++ b/html/jquery.js @@ -1,71 +1,26 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
          "],col:[2,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
          ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
          ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
          "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
          ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
          "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
          "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
          a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
          ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
          t
          ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
          ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

          ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
          ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
          ","
          "],thead:[1,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],col:[2,"","
          "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
          ","
          "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
          ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! - * jQuery UI 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! - * jQuery UI Widget 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ -(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! - * jQuery UI Mouse 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Mouse - * - * Depends: - * jquery.ui.widget.js - */ -(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
          ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
          ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! - * jQuery hashchange event - v1.3 - 7/21/2010 - * http://benalman.com/projects/jquery-hashchange-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
          +
          +
          /home/bradarant/barant/ServerCore/Command.h
          +
          +
          +
          1 #ifndef __Command_h__
          2 #define __Command_h__
          3 
          4 #include "includes"
          5 #include "Object.h"
          6 #include "TCPSession.h"
          7 #include "PString.h"
          8 
          9 namespace core {
          10 
          11  class Session;
          12 
          19 
          20  class Command : public Object {
          21 
          22  public:
          23 
          37 
          38  virtual bool check(std::string request);
          39 
          50 
          51  virtual int processCommand(std::string request, TCPSession *session, std::stringstream &data);
          52 
          58 
          59  virtual void output(Session *session);
          60 
          69 
          70  void setName(std::string name);
          71 
          72  std::string getName();
          73 
          74  private:
          75  std::string name;
          76 
          77  };
          78 
          79 }
          80 
          81 #endif
          Definition: Command.cpp:4
          +
          Definition: TCPSession.h:23
          +
          void setName(std::string name)
          Definition: Command.cpp:18
          +
          virtual bool check(std::string request)
          Definition: Command.cpp:10
          +
          Definition: Object.h:8
          +
          Definition: Command.h:20
          +
          virtual int processCommand(std::string request, TCPSession *session, std::stringstream &data)
          Definition: Command.cpp:6
          +
          virtual void output(Session *session)
          Definition: Command.cpp:8
          +
          + + + + diff --git a/latex/html/_command_list_8h_source.html b/latex/html/_command_list_8h_source.html new file mode 100644 index 0000000..a9b19f5 --- /dev/null +++ b/latex/html/_command_list_8h_source.html @@ -0,0 +1,82 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/CommandList.h Source File + + + + + + + + + +
          +
          +
          + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/CommandList.h
          +
          +
          +
          1 #ifndef __CommandList_h__
          2 #define __CommandList_h__
          3 
          4 #include "TCPSession.h"
          5 #include "Command.h"
          6 #include "Log.h"
          7 
          8 namespace core {
          9 
          17 
          18  class CommandList : public Command {
          19 
          20  public:
          21 
          25 
          26  void add(Command &command, std::string name = "");
          27 
          31 
          32  void remove(Command &command);
          33 
          40 
          41  bool processRequest(std::string request, TCPSession *session, std::stringstream &data);
          42 
          48 
          49  bool grabInput(TCPSession *session, Command &command);
          50 
          54 
          55  void clearGrab(TCPSession *session);
          56 
          60 
          61  int processCommand(std::string request, TCPSession *session, std::stringstream &data);
          62 
          63  protected:
          64 
          68 
          69  std::vector<Command *> commands;
          70 
          71  };
          72 
          73 }
          74 
          75 #endif
          bool processRequest(std::string request, TCPSession *session, std::stringstream &data)
          Definition: CommandList.cpp:15
          +
          Definition: Command.cpp:4
          +
          Definition: TCPSession.h:23
          +
          std::vector< Command * > commands
          Definition: CommandList.h:69
          +
          int processCommand(std::string request, TCPSession *session, std::stringstream &data)
          Definition: CommandList.cpp:41
          +
          bool grabInput(TCPSession *session, Command &command)
          Definition: CommandList.cpp:33
          +
          Definition: Command.h:20
          +
          Definition: CommandList.h:18
          +
          void add(Command &command, std::string name="")
          Definition: CommandList.cpp:6
          +
          + + + + diff --git a/latex/html/_console_server_8h_source.html b/latex/html/_console_server_8h_source.html new file mode 100644 index 0000000..bddfcb1 --- /dev/null +++ b/latex/html/_console_server_8h_source.html @@ -0,0 +1,80 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/ConsoleServer.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/ConsoleServer.h
          +
          +
          +
          1 #ifndef __ConsoleServer_h__
          2 #define __ConsoleServer_h__
          3 
          4 #include "includes"
          5 #include "TLSServer.h"
          6 #include "Command.h"
          7 #include "EPoll.h"
          8 #include "LogListener.h"
          9 
          10 namespace core {
          11 
          12  class TCPSocket;
          13  class TCPSession;
          14 
          18 
          19  class ConsoleServer : public TCPServer, public coreutils::LogListener {
          20 
          21  public:
          22 
          23  //
          24  //
          25  //
          26 
          27  ConsoleServer(EPoll &ePoll, IPAddress address);
          28 
          29  //
          30  //
          31  //
          32 
          33  void logSend(std::string out) override;
          34 
          35  TCPSession * getSocketAccept(EPoll &ePoll) override;
          36 
          37  };
          38 
          39 }
          40 
          41 #endif
          Definition: EPoll.h:31
          +
          Definition: Command.cpp:4
          +
          Definition: TCPSession.h:23
          +
          Definition: TCPServer.h:24
          +
          Definition: IPAddress.h:9
          +
          TCPSession * getSocketAccept(EPoll &ePoll) override
          Definition: ConsoleServer.cpp:17
          +
          Definition: ConsoleServer.h:19
          +
          + + + + diff --git a/latex/html/_console_session_8h_source.html b/latex/html/_console_session_8h_source.html new file mode 100644 index 0000000..1e7508c --- /dev/null +++ b/latex/html/_console_session_8h_source.html @@ -0,0 +1,79 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/ConsoleSession.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/ConsoleSession.h
          +
          +
          +
          1 #ifndef __ConsoleSession_h__
          2 #define __ConsoleSession_h__
          3 
          4 #include "TerminalSession.h"
          5 #include "TCPSession.h"
          6 #include "CommandList.h"
          7 
          8 namespace core {
          9 
          17 
          19 
          20  public:
          21  ConsoleSession(EPoll &ePoll, TCPServer &server);
          22  ~ConsoleSession();
          23 
          24  void writeLog(std::string data);
          25 
          26  protected:
          27  void protocol(std::stringstream &out, std::string data) override;
          28 
          29  private:
          30  enum Status {WELCOME, LOGIN, WAIT_USER_PROFILE, PASSWORD, WAIT_PASSWORD, PROMPT, INPUT, PROCESS, DONE};
          31  Status status = WELCOME;
          32  void doCommand(std::string request);
          33  std::string command;
          34 
          35  };
          36 
          37 }
          38 
          39 #endif
          Definition: EPoll.h:31
          +
          Definition: Command.cpp:4
          +
          Definition: ConsoleSession.h:18
          +
          Definition: TCPServer.h:24
          +
          void protocol(std::stringstream &out, std::string data) override
          Definition: ConsoleSession.cpp:12
          +
          Definition: TerminalSession.h:30
          +
          + + + + diff --git a/latex/html/_e_poll_8h_source.html b/latex/html/_e_poll_8h_source.html new file mode 100644 index 0000000..cb872df --- /dev/null +++ b/latex/html/_e_poll_8h_source.html @@ -0,0 +1,89 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/EPoll.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/EPoll.h
          +
          +
          +
          1 #ifndef __EPoll_h__
          2 #define __EPoll_h__
          3 
          4 #include "Log.h"
          5 #include "Socket.h"
          6 #include "Thread.h"
          7 #include "TCPSession.h"
          8 #include "Command.h"
          9 
          10 namespace core {
          11 
          30 
          31  class EPoll : public Command {
          32 
          33  public:
          34 
          38 
          39  EPoll();
          40 
          44 
          45  ~EPoll();
          46 
          53 
          54  bool start(int numberOfThreads, int maxSockets);
          55 
          61 
          62  bool stop();
          63 
          68 
          69  bool isStopping();
          70 
          79 
          80  bool registerSocket(Socket *socket);
          81 
          85 
          86  bool unregisterSocket(Socket *socket);
          87 
          91 
          92  int getDescriptor();
          93 
          97 
          98  int maxSockets;
          99 
          103 
          104  void eventReceived(struct epoll_event event, pid_t threadId);
          105 
          112 
          113  int processCommand(std::string command, TCPSession *session, std::stringstream &data) override;
          114 
          115  void resetSocket(Socket *socket);
          116 
          117  private:
          118 
          119  int epfd;
          120  int numberOfThreads;
          121  std::map<int, Socket *> sockets;
          122  std::vector<Thread> threads;
          123  volatile bool terminateThreads;
          124  std::mutex lock;
          125  void enableSocket(Socket *socket);
          126  void disableSocket(Socket *socket);
          127 
          128  };
          129 
          130 }
          131 
          132 #endif
          133 
          Definition: EPoll.h:31
          +
          Definition: Command.cpp:4
          +
          int processCommand(std::string command, TCPSession *session, std::stringstream &data) override
          Output the threads array to the console.
          Definition: EPoll.cpp:111
          +
          Definition: TCPSession.h:23
          +
          void eventReceived(struct epoll_event event, pid_t threadId)
          Dispatch event to appropriate socket.
          Definition: EPoll.cpp:95
          +
          ~EPoll()
          Definition: EPoll.cpp:17
          +
          int getDescriptor()
          Return the descriptor for the ePoll socket.
          Definition: EPoll.cpp:107
          +
          bool unregisterSocket(Socket *socket)
          Unregister a BMASocket from monitoring by BMAEPoll.
          Definition: EPoll.cpp:83
          +
          Definition: Socket.h:32
          +
          bool isStopping()
          Returns a true if the stop command has been requested.
          Definition: EPoll.cpp:67
          +
          EPoll()
          Definition: EPoll.cpp:8
          +
          Definition: Command.h:20
          +
          bool registerSocket(Socket *socket)
          Register a BMASocket for monitoring by BMAEPoll.
          Definition: EPoll.cpp:71
          +
          int maxSockets
          The maximum number of socket allowed.
          Definition: EPoll.h:98
          +
          bool start(int numberOfThreads, int maxSockets)
          Start the BMAEPoll processing.
          Definition: EPoll.cpp:21
          +
          bool stop()
          Stop and shut down the BMAEPoll processing.
          Definition: EPoll.cpp:47
          +
          + + + + diff --git a/latex/html/_i_notify_8h_source.html b/latex/html/_i_notify_8h_source.html new file mode 100644 index 0000000..d9cee76 --- /dev/null +++ b/latex/html/_i_notify_8h_source.html @@ -0,0 +1,77 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/INotify.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/INotify.h
          +
          +
          +
          1 #ifndef __INotify_h__
          2 # define __INotify_h__
          3 
          4 #include "includes"
          5 #include "Socket.h"
          6 
          7 namespace core {
          8 
          9  class INotify : Socket {
          10 
          11  public:
          12  INotify(EPoll &ePoll);
          13  ~INotify();
          14 
          15  int addWatch(std::string watch);
          16  void removeWatch(int wd);
          17 
          18  void onDataReceived(char *buffer, int len) override;
          19 
          20  virtual void inAccess(std::string name) {}
          21  virtual void inAttrib(std::string name) {}
          22  virtual void inCloseWrite(std::string name) {}
          23  virtual void inCloseNoWrite(std::string name) {}
          24  virtual void inCreate(std::string name) {}
          25  virtual void inDelete(std::string name) {}
          26  virtual void inDeleteSelf(std::string name) {}
          27  virtual void inModify(std::string name) {}
          28  virtual void inMoveSelf(std::string name) {}
          29  virtual void inMovedFrom(std::string name) {}
          30  virtual void inMovedTo(std::string name) {}
          31  virtual void inOpen(std::string name) {}
          32 
          33  };
          34 
          35 }
          36 
          37 #endif
          Definition: EPoll.h:31
          +
          Definition: Command.cpp:4
          +
          Definition: Socket.h:32
          +
          Definition: INotify.h:9
          +
          + + + + diff --git a/latex/html/_i_p_address_8h_source.html b/latex/html/_i_p_address_8h_source.html new file mode 100644 index 0000000..18d36b8 --- /dev/null +++ b/latex/html/_i_p_address_8h_source.html @@ -0,0 +1,79 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/IPAddress.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/IPAddress.h
          +
          +
          +
          1 #ifndef __IPAddress_h__
          2 #define __IPAddress_h__
          3 
          4 #include "includes"
          5 #include "Object.h"
          6 
          7 namespace core {
          8 
          9  class IPAddress : public Object {
          10 
          11  public:
          12  IPAddress();
          13  IPAddress(std::string address);
          14  IPAddress(std::string address, int port);
          15  ~IPAddress();
          16 
          17  struct sockaddr_in addr;
          18  socklen_t addressLength;
          19 
          20  struct sockaddr * getPointer();
          21  std::string getClientAddress();
          22  std::string getClientAddressAndPort();
          23  int getClientPort();
          24 
          25  };
          26 
          27 }
          28 
          29 #endif
          int getClientPort()
          Get the client network port number.
          Definition: IPAddress.cpp:47
          +
          Definition: Command.cpp:4
          +
          std::string getClientAddressAndPort()
          Get the client network address and port as xxx.xxx.xxx.xxx:ppppp.
          Definition: IPAddress.cpp:40
          +
          Definition: IPAddress.h:9
          +
          std::string getClientAddress()
          Get the client network address as xxx.xxx.xxx.xxx.
          Definition: IPAddress.cpp:35
          +
          Definition: Object.h:8
          +
          + + + + diff --git a/latex/html/_i_p_address_list_8h_source.html b/latex/html/_i_p_address_list_8h_source.html new file mode 100644 index 0000000..5c555eb --- /dev/null +++ b/latex/html/_i_p_address_list_8h_source.html @@ -0,0 +1,76 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/IPAddressList.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/IPAddressList.h
          +
          +
          +
          1 #ifndef __IPAddressList_h__
          2 #define __IPAddressList_h__
          3 
          4 #include "includes"
          5 #include "IPAddress.h"
          6 
          7 namespace core {
          8 
          9  class IPAddressList {
          10 
          11  public:
          12  IPAddressList();
          13 
          14  std::map<std::string, IPAddress> getList();
          15  bool add(IPAddress ipAddress);
          16  bool remove(IPAddress ipAddress);
          17  bool contains(std::string ipAddress);
          18 
          19  private:
          20  std::map<std::string, IPAddress> list;
          21  std::map<std::string, IPAddress>::iterator it = list.begin();
          22  };
          23 
          24 }
          25 
          26 #endif
          Definition: Command.cpp:4
          +
          Definition: IPAddress.h:9
          +
          Definition: IPAddressList.h:9
          +
          + + + + diff --git a/latex/html/_object_8h_source.html b/latex/html/_object_8h_source.html new file mode 100644 index 0000000..6718cc2 --- /dev/null +++ b/latex/html/_object_8h_source.html @@ -0,0 +1,75 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/Object.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/Object.h
          +
          +
          +
          1 #ifndef __Object_h__
          2 #define __Object_h__
          3 
          4 #include "includes"
          5 
          6 namespace core {
          7 
          8  class Object {
          9 
          10  public:
          11 
          12  std::string name;
          13  std::string tag;
          14 
          15  };
          16 
          17 }
          18 
          19 #endif
          Definition: Command.cpp:4
          +
          Definition: Object.h:8
          +
          + + + + diff --git a/latex/html/_session_filter_8h_source.html b/latex/html/_session_filter_8h_source.html new file mode 100644 index 0000000..b0c7ecf --- /dev/null +++ b/latex/html/_session_filter_8h_source.html @@ -0,0 +1,77 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/SessionFilter.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/SessionFilter.h
          +
          +
          +
          1 #ifndef __SessionFilter_h__
          2 #define __SessionFilter_h__
          3 
          4 //#include "Session.h"
          5 
          6 namespace core {
          7 
          8  class TCPSession;
          9 
          10  class SessionFilter : public Object {
          11 
          12  public:
          13  virtual bool test(TCPSession &session) {
          14  return true;
          15  }
          16 
          17  };
          18 
          19 }
          20 
          21 #endif
          Definition: Command.cpp:4
          +
          Definition: TCPSession.h:23
          +
          Definition: Object.h:8
          +
          Definition: SessionFilter.h:10
          +
          + + + + diff --git a/latex/html/_socket_8h_source.html b/latex/html/_socket_8h_source.html new file mode 100644 index 0000000..97402c7 --- /dev/null +++ b/latex/html/_socket_8h_source.html @@ -0,0 +1,86 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/Socket.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/Socket.h
          +
          +
          +
          1 #ifndef __Socket_h__
          2 #define __Socket_h__
          3 
          4 #include "includes"
          5 #include "Object.h"
          6 
          7 namespace core {
          8 
          9  class EPoll;
          10 
          31 
          32  class Socket : public core::Object {
          33 
          34  public:
          35 
          36  Socket(EPoll &ePoll);
          37  Socket(EPoll &ePoll, std::string text);
          38  ~Socket();
          39 
          45 
          46  void shutdown(std::string text = "unknown");
          47 
          52 
          53  void setDescriptor(int descriptor);
          54 
          55  int getDescriptor();
          56 
          57  class {
          58  int value;
          59 
          60  public:
          61  int & operator = (const int &i) { return value = i; }
          62  operator int () const { return value; }
          63 
          64  } bufferSize;
          65 
          75 
          76  bool eventReceived(struct epoll_event event, pid_t threadId);
          77 
          81 
          82  int write(std::string data);
          83  void write(char *buffer, int length);
          84 
          85  void output(std::stringstream &out);
          86 
          93 
          94  virtual void onRegister();
          95  virtual void onRegistered();
          96 
          103 
          104  virtual void onUnregister();
          105 
          106  bool needsToWrite();
          107 
          108  bool active = false;
          109 
          110  protected:
          111 
          112  EPoll &ePoll; // The EPoll control object.
          113 
          114  bool shutDown = false;
          115 
          116  void setBufferSize(int length);
          117 
          123 
          124 // virtual void onConnected(); ///< Called when socket is open and ready to communicate.
          125 
          129 
          130 // virtual void onDisconnected(); ///< Called when socket is closing and no longer ready to communicate.
          131 
          139 
          140  virtual void onDataReceived(std::string data);
          141 
          142  virtual void onDataReceived(char *buffer, int len);
          143 
          148 
          149  virtual void receiveData(char *buffer, int bufferLength);
          150 
          151  private:
          152 
          153  std::string text;
          154  int descriptor = -1;
          155  std::mutex lock;
          156  std::mutex outlock;
          157  bool readHangup = false;
          158 
          159 // struct epoll_event event; // Event selection construction structure.
          160 
          161  //-------------------------------------------------------------------------------------
          162  // the writeSocket is called when epoll has received a write request for a socket.
          163  // Writing data to this socket is queued in the streambuf and permission is requested
          164  // to write to the socket. This routine handles the writing of the streambuf data
          165  // buffer to the socket.
          166  //-------------------------------------------------------------------------------------
          167 
          168  void writeSocket();
          169 
          170  // int_type underflow();
          171 // int_type uflow();
          172 // int_type pbackfail(int_type ch);
          173 // streamsize showmanyc();
          174 
          175  char *buffer; // This is a pointer to the managed buffer space.
          176  int length; // This is the length of the buffer.
          177 
          178 // const char * const begin_;
          179 // const char * const end_;
          180 // const char * const current_;
          181 
          182  std::queue<std::string> fifo;
          183 
          184  };
          185 
          186 }
          187 
          188 #endif
          189 
          virtual void onDataReceived(std::string data)
          Called when data is received from the socket.
          Definition: Socket.cpp:99
          +
          Definition: EPoll.h:31
          +
          virtual void receiveData(char *buffer, int bufferLength)
          Definition: Socket.cpp:107
          +
          virtual void onUnregister()
          Called when the socket has finished unregistering for the epoll processing.
          Definition: Socket.cpp:59
          +
          Definition: Command.cpp:4
          +
          int write(std::string data)
          Definition: Socket.cpp:156
          +
          bool eventReceived(struct epoll_event event, pid_t threadId)
          Parse epoll event and call specified callbacks.
          Definition: Socket.cpp:61
          +
          void setDescriptor(int descriptor)
          Set the descriptor for the socket.
          Definition: Socket.cpp:30
          +
          Definition: Socket.h:32
          +
          virtual void onRegister()
          Called when the socket has finished registering with the epoll processing.
          Definition: Socket.cpp:55
          +
          int getDescriptor()
          Get the descriptor for the socket.
          Definition: Socket.cpp:46
          +
          Definition: Object.h:8
          +
          void shutdown(std::string text="unknown")
          Definition: Socket.cpp:177
          +
          + + + + diff --git a/latex/html/_t_c_p_server_8h_source.html b/latex/html/_t_c_p_server_8h_source.html new file mode 100644 index 0000000..6eee670 --- /dev/null +++ b/latex/html/_t_c_p_server_8h_source.html @@ -0,0 +1,92 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/TCPServer.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/TCPServer.h
          +
          +
          +
          1 #ifndef __TCPServer_h__
          2 #define __TCPServer_h__
          3 
          4 #include "Socket.h"
          5 #include "TCPSocket.h"
          6 #include "IPAddressList.h"
          7 #include "Command.h"
          8 #include "CommandList.h"
          9 
          10 namespace core {
          11 
          23 
          24  class TCPServer : public TCPSocket, public Command {
          25 
          26  public:
          27 
          37 
          38  TCPServer(EPoll &ePoll, IPAddress address, std::string text = "");
          39 
          43 
          44  ~TCPServer();
          45 
          51 
          53 
          59 
          61 
          62  void removeFromSessionList(TCPSession *session);
          63 
          64  virtual void sessionErrorHandler(std::string errorString, std::stringstream &out);
          65 
          73 
          74  virtual TCPSession * getSocketAccept(EPoll &epoll);
          75 
          76  void output(TCPSession *session);
          77 
          81 
          82  std::vector<TCPSession *> sessions;
          83 
          88 
          90 
          91  protected:
          92 
          102 
          103  void onDataReceived(std::string data) override;
          104 
          111 
          112  int processCommand(std::string command, TCPSession *session, std::stringstream &data) override;
          113 
          114  private:
          115 
          116  TCPSession * accept();
          117  std::mutex lock;
          118 
          119  };
          120 
          121 }
          122 
          123 #endif
          Definition: EPoll.h:31
          +
          void onDataReceived(std::string data) override
          Definition: TCPServer.cpp:25
          +
          virtual TCPSession * getSocketAccept(EPoll &epoll)
          Definition: TCPServer.cpp:64
          +
          std::vector< TCPSession * > sessions
          Definition: TCPServer.h:82
          +
          Definition: Command.cpp:4
          +
          Definition: TCPSession.h:23
          +
          Definition: TCPServer.h:24
          +
          TCPServer(EPoll &ePoll, IPAddress address, std::string text="")
          Definition: TCPServer.cpp:9
          +
          int processCommand(std::string command, TCPSession *session, std::stringstream &data) override
          Definition: TCPServer.cpp:74
          +
          Definition: IPAddress.h:9
          +
          IPAddressList * whiteList
          Definition: TCPServer.h:60
          +
          ~TCPServer()
          Definition: TCPServer.cpp:20
          +
          Definition: Command.h:20
          +
          void output(TCPSession *session)
          Output the consoles array to the console.
          Definition: TCPServer.cpp:68
          +
          Definition: TCPSocket.h:20
          +
          Definition: CommandList.h:18
          +
          IPAddressList * blackList
          Definition: TCPServer.h:52
          +
          Definition: IPAddressList.h:9
          +
          CommandList commands
          Definition: TCPServer.h:89
          +
          + + + + diff --git a/latex/html/_t_c_p_session_8h_source.html b/latex/html/_t_c_p_session_8h_source.html new file mode 100644 index 0000000..e71bb1e --- /dev/null +++ b/latex/html/_t_c_p_session_8h_source.html @@ -0,0 +1,87 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/TCPSession.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/TCPSession.h
          +
          +
          +
          1 #ifndef __Session_h__
          2 #define __Session_h__
          3 
          4 #include "TCPSocket.h"
          5 #include "SessionFilter.h"
          6 
          7 namespace core {
          8 
          9  class Command;
          10 
          11  class TCPServer;
          12 
          22 
          23  class TCPSession : public TCPSocket {
          24 
          25  public:
          26  TCPSession(EPoll &ePoll, TCPServer &server);
          27  TCPSession(EPoll &ePoll, TCPServer &server, std::string text);
          28  ~TCPSession();
          29 
          30  Command *grab = NULL;
          31 
          32  virtual void output(std::stringstream &data);
          33 
          38 
          39  void send(std::string data);
          40 
          45 
          46  void sendToAll(std::string data);
          47 
          53 
          54  void sendToAll(SessionFilter filter, std::string data);
          55 
          56  TCPServer &server;
          57 
          58  protected:
          59 
          60  virtual void onDataReceived(std::string data) override;
          61  virtual void onRegister() override;
          62 
          68 
          69  virtual void onConnected(std::stringstream &out);
          70 
          77 
          78  virtual void protocol(std::stringstream &out, std::string data);
          79 
          80  private:
          81 
          82  std::mutex mtx;
          83 
          84  };
          85 
          86 }
          87 
          88 #endif
          Definition: EPoll.h:31
          +
          Definition: Command.cpp:4
          +
          Definition: TCPSession.h:23
          +
          virtual void onConnected(std::stringstream &out)
          Definition: TCPSession.cpp:36
          +
          Definition: TCPServer.h:24
          +
          void sendToAll(std::string data)
          Definition: TCPSession.cpp:44
          +
          virtual void protocol(std::stringstream &out, std::string data)
          Definition: TCPSession.cpp:20
          +
          virtual void onRegister() override
          Called when the socket has finished registering with the epoll processing.
          Definition: TCPSession.cpp:30
          +
          virtual void onDataReceived(std::string data) override
          Called when data is received from the socket.
          Definition: TCPSession.cpp:38
          +
          void send(std::string data)
          Definition: TCPSession.cpp:57
          +
          Definition: Command.h:20
          +
          Definition: TCPSocket.h:20
          +
          Definition: SessionFilter.h:10
          +
          virtual void output(std::stringstream &data)
          Definition: TCPSession.cpp:16
          +
          + + + + diff --git a/latex/html/_t_c_p_socket_8h_source.html b/latex/html/_t_c_p_socket_8h_source.html new file mode 100644 index 0000000..e63375f --- /dev/null +++ b/latex/html/_t_c_p_socket_8h_source.html @@ -0,0 +1,79 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/TCPSocket.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/TCPSocket.h
          +
          +
          +
          1 #ifndef __TCPSocket_h__
          2 #define __TCPSocket_h__
          3 
          4 #include "includes"
          5 #include "Socket.h"
          6 #include "IPAddress.h"
          7 
          8 namespace core {
          9 
          19 
          20  class TCPSocket : public Socket {
          21 
          22  public:
          23 
          24  TCPSocket(EPoll &ePoll);
          25  TCPSocket(EPoll &ePoll, std::string text);
          26  ~TCPSocket();
          27 
          28  void connect(IPAddress &address);
          29 
          30  IPAddress ipAddress;
          31 
          38 
          39  virtual void output(std::stringstream &out);
          40 
          41  };
          42 
          43 }
          44 
          45 #endif
          Definition: EPoll.h:31
          +
          Definition: Command.cpp:4
          +
          Definition: Socket.h:32
          +
          Definition: IPAddress.h:9
          +
          Definition: TCPSocket.h:20
          +
          virtual void output(std::stringstream &out)
          Definition: TCPSocket.cpp:21
          +
          + + + + diff --git a/latex/html/_t_l_s_server_8h_source.html b/latex/html/_t_l_s_server_8h_source.html new file mode 100644 index 0000000..cc7dfa4 --- /dev/null +++ b/latex/html/_t_l_s_server_8h_source.html @@ -0,0 +1,81 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/TLSServer.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/TLSServer.h
          +
          +
          +
          1 #ifndef TLSServerSocket_h__
          2 #define TLSServerSocket_h__
          3 
          4 #include "Socket.h"
          5 #include "TCPServer.h"
          6 #include "Command.h"
          7 #include "TCPSession.h"
          8 #include "IPAddress.h"
          9 
          10 namespace core {
          11 
          18 
          19  class TLSServer : public TCPServer {
          20 
          21  public:
          22 
          31 
          32  TLSServer(EPoll &ePoll, IPAddress address);
          33 
          37 
          38  ~TLSServer();
          39 
          40  TCPSession * getSocketAccept();
          41 
          42  SSL_CTX *ctx;
          43 
          44  private:
          45 
          46  char *sip_cacert = (char *)"../testkeys/certs/pbxca.crt";
          47  char *sip_cert = (char *)"../testkeys/certs/pbxserver.crt";
          48  char *sip_key = (char *)"../testkeys/certs/pbxserver.key";
          49 
          50  };
          51 
          52 }
          53 
          54 #endif
          Definition: EPoll.h:31
          +
          Definition: Command.cpp:4
          +
          ~TLSServer()
          Definition: TLSServer.cpp:58
          +
          Definition: TCPSession.h:23
          +
          Definition: TCPServer.h:24
          +
          Definition: IPAddress.h:9
          +
          TLSServer(EPoll &ePoll, IPAddress address)
          Definition: TLSServer.cpp:22
          +
          Definition: TLSServer.h:19
          +
          + + + + diff --git a/latex/html/_t_l_s_session_8h_source.html b/latex/html/_t_l_s_session_8h_source.html new file mode 100644 index 0000000..115a08f --- /dev/null +++ b/latex/html/_t_l_s_session_8h_source.html @@ -0,0 +1,82 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/TLSSession.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/TLSSession.h
          +
          +
          +
          1 #ifndef __TLSSession_h__
          2 #define __TLSSession_h__
          3 
          4 #include "includes"
          5 #include "TCPSession.h"
          6 #include "TLSServer.h"
          7 #include <openssl/ssl.h>
          8 
          9 namespace core {
          10 
          11  class TLSServer;
          12 
          22 
          23  class TLSSession : public TCPSession {
          24 
          25  public:
          26 
          27  TLSSession(EPoll &ePoll, TCPServer &server);
          28  ~TLSSession();
          29 
          36 
          37  virtual void output(std::stringstream &out);
          38  virtual void protocol(std::stringstream &out, std::string data) override;
          39 
          40  protected:
          41  void receiveData(char *buffer, int bufferLength) override;
          42  void onRegister();
          43  void onRegistered();
          44 
          45  private:
          46  bool initialized = false;
          47  SSL *ssl;
          48 
          49  };
          50 
          51 }
          52 
          53 #endif
          virtual void protocol(std::stringstream &out, std::string data) override
          Definition: TLSSession.cpp:85
          +
          Definition: EPoll.h:31
          +
          Definition: Command.cpp:4
          +
          Definition: TCPSession.h:23
          +
          Definition: TCPServer.h:24
          +
          void onRegister()
          Called when the socket has finished registering with the epoll processing.
          Definition: TLSSession.cpp:36
          +
          void receiveData(char *buffer, int bufferLength) override
          Definition: TLSSession.cpp:89
          +
          Definition: TLSSession.h:23
          +
          virtual void output(std::stringstream &out)
          Definition: TLSSession.cpp:122
          +
          + + + + diff --git a/latex/html/_terminal_session_8h_source.html b/latex/html/_terminal_session_8h_source.html new file mode 100644 index 0000000..89a445b --- /dev/null +++ b/latex/html/_terminal_session_8h_source.html @@ -0,0 +1,81 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/TerminalSession.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/TerminalSession.h
          +
          +
          +
          1 #ifndef __Terminal_h__
          2 #define __Terminal_h__
          3 
          4 #include "includes"
          5 #include "TLSSession.h"
          6 #include "TCPServer.h"
          7 
          8 namespace core {
          9 
          10  static const int FG_BLACK = 30;
          11  static const int FG_RED = 31;
          12  static const int FG_GREEN = 32;
          13  static const int FG_YELLOW = 33;
          14  static const int FG_BLUE = 34;
          15  static const int FG_MAGENTA = 35;
          16  static const int FG_CYAN = 36;
          17  static const int FG_WHITE = 37;
          18 
          19  static const int BG_BLACK = 40;
          20  static const int BG_RED = 41;
          21  static const int BG_GREEN = 42;
          22  static const int BG_YELLOW = 43;
          23  static const int BG_BLUE = 44;
          24  static const int BG_MAGENTA = 45;
          25  static const int BG_CYAN = 46;
          26  static const int BG_WHITE = 47;
          27 
          28  static const char esc = 0x1b;
          29 
          30  class TerminalSession : public TCPSession {
          31 
          32  public:
          33  TerminalSession(EPoll &ePoll, TCPServer &server);
          34  ~TerminalSession();
          35 
          36  int getLines();
          37 
          41 
          42  void clear();
          43 
          47 
          48  void clearEOL();
          49 
          53 
          54  void setCursorLocation(int x, int y);
          55  void setColor(int color);
          56  void setBackColor(int color);
          57  void saveCursor();
          58  void restoreCursor();
          59  void NextLine(int lines);
          60  void PreviousLine(int lines);
          61  void scrollArea(int start, int end);
          62 
          63  };
          64 
          65 }
          66 
          67 #endif
          Definition: EPoll.h:31
          +
          Definition: Command.cpp:4
          +
          Definition: TCPSession.h:23
          +
          Definition: TCPServer.h:24
          +
          void setCursorLocation(int x, int y)
          Definition: TerminalSession.cpp:25
          +
          void clear()
          Definition: TerminalSession.cpp:17
          +
          void clearEOL()
          Definition: TerminalSession.cpp:21
          +
          Definition: TerminalSession.h:30
          +
          + + + + diff --git a/latex/html/_thread_8h_source.html b/latex/html/_thread_8h_source.html new file mode 100644 index 0000000..1340162 --- /dev/null +++ b/latex/html/_thread_8h_source.html @@ -0,0 +1,78 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/Thread.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/Thread.h
          +
          +
          +
          1 #ifndef __Thread_h__
          2 #define __Thread_h__
          3 
          4 #include "includes"
          5 #include "Log.h"
          6 #include "Object.h"
          7 #include "TCPSession.h"
          8 
          9 namespace core {
          10 
          11  class EPoll;
          12 
          20 
          21  class Thread : public Object {
          22 
          23  public:
          24  Thread(EPoll &ePoll);
          25  ~Thread();
          26 
          30 
          31  void start();
          32  void join();
          33  std::string getStatus();
          34  pid_t getThreadId();
          35  int getCount();
          36  void output(std::stringstream &data);
          37 
          38  private:
          39  EPoll &ePoll; // The EPoll control object.
          40  std::string status;
          41  int count;
          42  std::thread *_thread;
          43  void print_thread_start_log();
          44  pid_t threadId;
          45  void run();
          46 
          47  };
          48 
          49 }
          50 
          51 #endif
          Definition: EPoll.h:31
          +
          Definition: Command.cpp:4
          +
          Definition: Thread.h:21
          +
          void start()
          Definition: Thread.cpp:10
          +
          Definition: Object.h:8
          +
          + + + + diff --git a/latex/html/_timer_8h_source.html b/latex/html/_timer_8h_source.html new file mode 100644 index 0000000..d8ee553 --- /dev/null +++ b/latex/html/_timer_8h_source.html @@ -0,0 +1,81 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/Timer.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/Timer.h
          +
          +
          +
          1 #ifndef __Timer_h__
          2 #define __Timer_h__
          3 
          4 #include "Socket.h"
          5 #include "EPoll.h"
          6 
          7 namespace core {
          8 
          17 
          18  class Timer : Socket {
          19 
          20  public:
          21  Timer(EPoll &ePoll);
          22  Timer(EPoll &ePoll, double delay);
          23  ~Timer();
          24 
          32 
          33  void setTimer(double delay);
          34 
          38 
          39  void clearTimer();
          40 
          45 
          46  double getElapsed();
          47 
          48  double getEpoch();
          49 
          50  protected:
          51 
          55 
          56  virtual void onTimeout() = 0;
          57 
          58  private:
          59  void onDataReceived(std::string data) override;
          60  double delayValue;
          61 
          62  };
          63 
          64 }
          65 
          66 #endif
          Definition: EPoll.h:31
          +
          double getElapsed()
          Definition: Timer.cpp:47
          +
          Definition: Command.cpp:4
          +
          virtual void onTimeout()=0
          +
          Definition: Timer.h:18
          +
          void setTimer(double delay)
          Definition: Timer.cpp:14
          +
          Definition: Socket.h:32
          +
          void clearTimer()
          Definition: Timer.cpp:34
          +
          + + + + diff --git a/latex/html/_u_d_p_server_socket_8h_source.html b/latex/html/_u_d_p_server_socket_8h_source.html new file mode 100644 index 0000000..5d94679 --- /dev/null +++ b/latex/html/_u_d_p_server_socket_8h_source.html @@ -0,0 +1,79 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/UDPServerSocket.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/UDPServerSocket.h
          +
          +
          +
          1 #ifndef __UDPServerSocket_h__
          2 #define __UDPServerSocket_h__
          3 
          4 #include "Socket.h"
          5 #include "UDPSocket.h"
          6 #include "Command.h"
          7 
          8 namespace core {
          9 
          16 
          17  class UDPServerSocket : public UDPSocket, public Command {
          18 
          19  public:
          20 
          21  UDPServerSocket(EPoll &ePoll, std::string url, short int port, std::string commandName);
          22  ~UDPServerSocket();
          23 
          24  protected:
          25 
          26  //---------------------------------------------------------------
          27  // Override the virtual dataReceived since for the server these
          28  // are requests to accept the new connection socket.
          29  //---------------------------------------------------------------
          30 
          31  void onDataReceived(std::string data) override;
          32 
          33  int processCommand(std::string request, std::stringstream &data);
          34 
          35  //------------------------------------------------------------------------------------
          36  // The retrieved socket connections are placed into the client vector list.
          37  //------------------------------------------------------------------------------------
          38 
          39  std::vector<Session *> sessions;
          40 
          41  private:
          42 
          43 
          44  };
          45 
          46 }
          47 
          48 #endif
          Definition: EPoll.h:31
          +
          Definition: Command.cpp:4
          +
          Definition: UDPSocket.h:8
          +
          Definition: UDPServerSocket.h:17
          +
          void onDataReceived(std::string data) override
          Called when data is received from the socket.
          Definition: UDPServerSocket.cpp:35
          +
          Definition: Command.h:20
          +
          + + + + diff --git a/latex/html/_u_d_p_socket_8h_source.html b/latex/html/_u_d_p_socket_8h_source.html new file mode 100644 index 0000000..abcbac8 --- /dev/null +++ b/latex/html/_u_d_p_socket_8h_source.html @@ -0,0 +1,77 @@ + + + + + + + +My Project: /home/bradarant/barant/ServerCore/UDPSocket.h Source File + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          /home/bradarant/barant/ServerCore/UDPSocket.h
          +
          +
          +
          1 #ifndef UDPSocket_h__
          2 #define UDPSocket_h__
          3 
          4 #include "Socket.h"
          5 
          6 namespace core {
          7 
          8  class UDPSocket : public Socket {
          9 
          10  public:
          11  UDPSocket(EPoll &ePoll);
          12  ~UDPSocket();
          13 
          14 // virtual int open(string address, short int port);
          15 // virtual void write(istream data);
          16 
          17 };
          18 
          19 }
          20 
          21 #endif
          Definition: EPoll.h:31
          +
          Definition: Command.cpp:4
          +
          Definition: UDPSocket.h:8
          +
          Definition: Socket.h:32
          +
          + + + + diff --git a/latex/html/annotated.html b/latex/html/annotated.html new file mode 100644 index 0000000..05b1c90 --- /dev/null +++ b/latex/html/annotated.html @@ -0,0 +1,99 @@ + + + + + + + +My Project: Class List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          Class List
          +
          +
          +
          Here are the classes, structs, unions and interfaces with brief descriptions:
          +
          [detail level 12]
          + + + + + + + + + + + + + + + + + + + + + + +
           Ncore
           CCommand
           CCommandList
           CConsoleServer
           CConsoleSession
           CEPoll
           CINotify
           CIPAddress
           CIPAddressList
           CObject
           CSessionFilter
           CSocket
           CTCPServer
           CTCPSession
           CTCPSocket
           CTerminalSession
           CThread
           CTimer
           CTLSServer
           CTLSSession
           CUDPServerSocket
           CUDPSocket
          +
          +
          + + + + diff --git a/latex/html/bc_s.png b/latex/html/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/latex/html/bc_s.png differ diff --git a/latex/html/bdwn.png b/latex/html/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/latex/html/bdwn.png differ diff --git a/latex/html/classcore_1_1_command-members.html b/latex/html/classcore_1_1_command-members.html new file mode 100644 index 0000000..3912b9d --- /dev/null +++ b/latex/html/classcore_1_1_command-members.html @@ -0,0 +1,86 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::Command Member List
          +
          +
          + +

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

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

          #include <Command.h>

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

          +Public Member Functions

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

          +Additional Inherited Members

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

          Detailed Description

          +

          Command

          +

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

          +

          Member Function Documentation

          + +

          ◆ check()

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

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

          +

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

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

          ◆ output()

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

          Specify the output that will occur to the specified session.

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

          ◆ processCommand()

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

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

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

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

          + +
          +
          + +

          ◆ setName()

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

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

          +
          Parameters
          + + +
          nameSpecify the name of this command for default parsing.
          +
          +
          + +
          +
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/Command.h
          • +
          • /home/bradarant/barant/ServerCore/Command.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_command__coll__graph.map b/latex/html/classcore_1_1_command__coll__graph.map new file mode 100644 index 0000000..8d43cd0 --- /dev/null +++ b/latex/html/classcore_1_1_command__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/latex/html/classcore_1_1_command__coll__graph.md5 b/latex/html/classcore_1_1_command__coll__graph.md5 new file mode 100644 index 0000000..4956832 --- /dev/null +++ b/latex/html/classcore_1_1_command__coll__graph.md5 @@ -0,0 +1 @@ +fb20e2e2818e0deb25bd92d98bab297f \ No newline at end of file diff --git a/latex/html/classcore_1_1_command__coll__graph.png b/latex/html/classcore_1_1_command__coll__graph.png new file mode 100644 index 0000000..a0d4d94 Binary files /dev/null and b/latex/html/classcore_1_1_command__coll__graph.png differ diff --git a/latex/html/classcore_1_1_command__inherit__graph.map b/latex/html/classcore_1_1_command__inherit__graph.map new file mode 100644 index 0000000..1638fe1 --- /dev/null +++ b/latex/html/classcore_1_1_command__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/latex/html/classcore_1_1_command__inherit__graph.md5 b/latex/html/classcore_1_1_command__inherit__graph.md5 new file mode 100644 index 0000000..54bfea5 --- /dev/null +++ b/latex/html/classcore_1_1_command__inherit__graph.md5 @@ -0,0 +1 @@ +0a00db25409a71f7d1cd846d121e26a0 \ No newline at end of file diff --git a/latex/html/classcore_1_1_command__inherit__graph.png b/latex/html/classcore_1_1_command__inherit__graph.png new file mode 100644 index 0000000..1fceae9 Binary files /dev/null and b/latex/html/classcore_1_1_command__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_command_list-members.html b/latex/html/classcore_1_1_command_list-members.html new file mode 100644 index 0000000..a4fab1f --- /dev/null +++ b/latex/html/classcore_1_1_command_list-members.html @@ -0,0 +1,92 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::CommandList Member List
          +
          +
          + +

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

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

          #include <CommandList.h>

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

          +Public Member Functions

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

          +Protected Attributes

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

          +Additional Inherited Members

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

          Detailed Description

          +

          CommandList

          +

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

          +

          Member Function Documentation

          + +

          ◆ add()

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

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

          + +
          +
          + +

          ◆ grabInput()

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

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

          + +
          +
          + +

          ◆ processCommand()

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

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

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

          Reimplemented from core::Command.

          + +
          +
          + +

          ◆ processRequest()

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

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

          + +
          +
          + +

          ◆ remove()

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

          Remove a command object from the command list.

          + +
          +
          +

          Member Data Documentation

          + +

          ◆ commands

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

          The vector of all registered commands.

          + +
          +
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/CommandList.h
          • +
          • /home/bradarant/barant/ServerCore/CommandList.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_command_list__coll__graph.map b/latex/html/classcore_1_1_command_list__coll__graph.map new file mode 100644 index 0000000..b644a8c --- /dev/null +++ b/latex/html/classcore_1_1_command_list__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/latex/html/classcore_1_1_command_list__coll__graph.md5 b/latex/html/classcore_1_1_command_list__coll__graph.md5 new file mode 100644 index 0000000..ae6b44f --- /dev/null +++ b/latex/html/classcore_1_1_command_list__coll__graph.md5 @@ -0,0 +1 @@ +9537f0ac08146b53ecb7539fe3757032 \ No newline at end of file diff --git a/latex/html/classcore_1_1_command_list__coll__graph.png b/latex/html/classcore_1_1_command_list__coll__graph.png new file mode 100644 index 0000000..b008d27 Binary files /dev/null and b/latex/html/classcore_1_1_command_list__coll__graph.png differ diff --git a/latex/html/classcore_1_1_command_list__inherit__graph.map b/latex/html/classcore_1_1_command_list__inherit__graph.map new file mode 100644 index 0000000..b644a8c --- /dev/null +++ b/latex/html/classcore_1_1_command_list__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/latex/html/classcore_1_1_command_list__inherit__graph.md5 b/latex/html/classcore_1_1_command_list__inherit__graph.md5 new file mode 100644 index 0000000..2284409 --- /dev/null +++ b/latex/html/classcore_1_1_command_list__inherit__graph.md5 @@ -0,0 +1 @@ +a7a4026a028979ef6450e0516b274bd5 \ No newline at end of file diff --git a/latex/html/classcore_1_1_command_list__inherit__graph.png b/latex/html/classcore_1_1_command_list__inherit__graph.png new file mode 100644 index 0000000..b008d27 Binary files /dev/null and b/latex/html/classcore_1_1_command_list__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_console_server-members.html b/latex/html/classcore_1_1_console_server-members.html new file mode 100644 index 0000000..1bec79e --- /dev/null +++ b/latex/html/classcore_1_1_console_server-members.html @@ -0,0 +1,127 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::ConsoleServer Member List
          +
          +
          + +

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

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

          +Public Member Functions

          ConsoleServer (EPoll &ePoll, IPAddress address)
           
          +void logSend (std::string out) override
           
          TCPSessiongetSocketAccept (EPoll &ePoll) override
           
          - Public Member Functions inherited from core::TCPServer
           TCPServer (EPoll &ePoll, IPAddress address, std::string text="")
           
           ~TCPServer ()
           
          +void removeFromSessionList (TCPSession *session)
           
          +virtual void sessionErrorHandler (std::string errorString, std::stringstream &out)
           
          +void output (TCPSession *session)
           Output the consoles array to the console.
           
          - Public Member Functions inherited from core::TCPSocket
          TCPSocket (EPoll &ePoll)
           
          TCPSocket (EPoll &ePoll, std::string text)
           
          +void connect (IPAddress &address)
           
          virtual void output (std::stringstream &out)
           
          - Public Member Functions inherited from core::Socket
          Socket (EPoll &ePoll)
           
          Socket (EPoll &ePoll, std::string text)
           
          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, pid_t threadId)
           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 when the socket has finished registering with the epoll processing. More...
           
          +virtual void onRegistered ()
           
          virtual void onUnregister ()
           Called when the socket has finished unregistering for the epoll processing. More...
           
          +bool needsToWrite ()
           
          - Public Member Functions inherited from core::Command
          virtual bool check (std::string request)
           
          virtual void output (Session *session)
           
          void setName (std::string name)
           
          +std::string getName ()
           
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          +Additional Inherited Members

          - Public Attributes inherited from core::TCPServer
          IPAddressListblackList
           
          IPAddressListwhiteList
           
          std::vector< TCPSession * > sessions
           
          CommandList commands
           
          - Public Attributes inherited from core::TCPSocket
          +IPAddress ipAddress
           
          - Public Attributes inherited from core::Socket
          +class {
          bufferSize
           
          +bool active = false
           
          - Public Attributes inherited from core::Object
          +std::string name
           
          +std::string tag
           
          - Protected Member Functions inherited from core::TCPServer
          void onDataReceived (std::string data) override
           
          int processCommand (std::string command, TCPSession *session, std::stringstream &data) override
           
          - Protected Member Functions inherited from core::Socket
          +void setBufferSize (int length)
           
          +virtual void onDataReceived (char *buffer, int len)
           
          virtual void receiveData (char *buffer, int bufferLength)
           
          - Protected Attributes inherited from core::Socket
          +EPollePoll
           
          +bool shutDown = false
           
          +

          Member Function Documentation

          + +

          ◆ getSocketAccept()

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

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

          + +

          Reimplemented from core::TCPServer.

          + +
          +
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/ConsoleServer.h
          • +
          • /home/bradarant/barant/ServerCore/ConsoleServer.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_console_server__coll__graph.map b/latex/html/classcore_1_1_console_server__coll__graph.map new file mode 100644 index 0000000..d341a7f --- /dev/null +++ b/latex/html/classcore_1_1_console_server__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/latex/html/classcore_1_1_console_server__coll__graph.md5 b/latex/html/classcore_1_1_console_server__coll__graph.md5 new file mode 100644 index 0000000..78637e5 --- /dev/null +++ b/latex/html/classcore_1_1_console_server__coll__graph.md5 @@ -0,0 +1 @@ +69f321be88e310358e307ce842020f1a \ No newline at end of file diff --git a/latex/html/classcore_1_1_console_server__coll__graph.png b/latex/html/classcore_1_1_console_server__coll__graph.png new file mode 100644 index 0000000..6ac6fea Binary files /dev/null and b/latex/html/classcore_1_1_console_server__coll__graph.png differ diff --git a/latex/html/classcore_1_1_console_server__inherit__graph.map b/latex/html/classcore_1_1_console_server__inherit__graph.map new file mode 100644 index 0000000..379a145 --- /dev/null +++ b/latex/html/classcore_1_1_console_server__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/latex/html/classcore_1_1_console_server__inherit__graph.md5 b/latex/html/classcore_1_1_console_server__inherit__graph.md5 new file mode 100644 index 0000000..9284037 --- /dev/null +++ b/latex/html/classcore_1_1_console_server__inherit__graph.md5 @@ -0,0 +1 @@ +7348f3f0bcc9acefce5a45845d1e7e21 \ No newline at end of file diff --git a/latex/html/classcore_1_1_console_server__inherit__graph.png b/latex/html/classcore_1_1_console_server__inherit__graph.png new file mode 100644 index 0000000..628a3d0 Binary files /dev/null and b/latex/html/classcore_1_1_console_server__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_console_session-members.html b/latex/html/classcore_1_1_console_session-members.html new file mode 100644 index 0000000..2ea77d8 --- /dev/null +++ b/latex/html/classcore_1_1_console_session-members.html @@ -0,0 +1,135 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::ConsoleSession Member List
          +
          +
          + +

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

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          active (defined in core::Socket)core::Socket
          bufferSize (defined in core::Socket)core::Socket
          clear()core::TerminalSession
          clearEOL()core::TerminalSession
          connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
          ConsoleSession(EPoll &ePoll, TCPServer &server) (defined in core::ConsoleSession)core::ConsoleSession
          ePoll (defined in core::Socket)core::Socketprotected
          eventReceived(struct epoll_event event, pid_t threadId)core::Socket
          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
          onConnected(std::stringstream &out)core::TCPSessionprotectedvirtual
          onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
          onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
          onRegister() overridecore::TCPSessionprotectedvirtual
          onRegistered() (defined in core::Socket)core::Socketvirtual
          onUnregister()core::Socketvirtual
          output(std::stringstream &data)core::TCPSessionvirtual
          PreviousLine(int lines) (defined in core::TerminalSession)core::TerminalSession
          protocol(std::stringstream &out, std::string data) overridecore::ConsoleSessionprotectedvirtual
          receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
          restoreCursor() (defined in core::TerminalSession)core::TerminalSession
          saveCursor() (defined in core::TerminalSession)core::TerminalSession
          scrollArea(int start, int end) (defined in core::TerminalSession)core::TerminalSession
          send(std::string data)core::TCPSession
          sendToAll(std::string data)core::TCPSession
          sendToAll(SessionFilter filter, std::string data)core::TCPSession
          server (defined in core::TCPSession)core::TCPSession
          setBackColor(int color) (defined in core::TerminalSession)core::TerminalSession
          setBufferSize(int length) (defined in core::Socket)core::Socketprotected
          setColor(int color) (defined in core::TerminalSession)core::TerminalSession
          setCursorLocation(int x, int y)core::TerminalSession
          setDescriptor(int descriptor)core::Socket
          shutDown (defined in core::Socket)core::Socketprotected
          shutdown(std::string text="unknown")core::Socket
          Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
          Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
          tag (defined in core::Object)core::Object
          TCPSession(EPoll &ePoll, TCPServer &server) (defined in core::TCPSession)core::TCPSession
          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
          write(std::string data)core::Socket
          write(char *buffer, int length) (defined in core::Socket)core::Socket
          writeLog(std::string data) (defined in core::ConsoleSession)core::ConsoleSession
          ~ConsoleSession() (defined in core::ConsoleSession)core::ConsoleSession
          ~Socket() (defined in core::Socket)core::Socket
          ~TCPSession() (defined in core::TCPSession)core::TCPSession
          ~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
          ~TerminalSession() (defined in core::TerminalSession)core::TerminalSession
          + + + + diff --git a/latex/html/classcore_1_1_console_session.html b/latex/html/classcore_1_1_console_session.html new file mode 100644 index 0000000..ce89043 --- /dev/null +++ b/latex/html/classcore_1_1_console_session.html @@ -0,0 +1,324 @@ + + + + + + + +My Project: core::ConsoleSession Class Reference + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          + +
          +
          core::ConsoleSession Class Reference
          +
          +
          + +

          #include <ConsoleSession.h>

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

          +Public Member Functions

          ConsoleSession (EPoll &ePoll, TCPServer &server)
           
          +void writeLog (std::string data)
           
          - Public Member Functions inherited from core::TerminalSession
          TerminalSession (EPoll &ePoll, TCPServer &server)
           
          +int getLines ()
           
          void clear ()
           
          void clearEOL ()
           
          void setCursorLocation (int x, int y)
           
          +void setColor (int color)
           
          +void setBackColor (int color)
           
          +void saveCursor ()
           
          +void restoreCursor ()
           
          +void NextLine (int lines)
           
          +void PreviousLine (int lines)
           
          +void scrollArea (int start, int end)
           
          - Public Member Functions inherited from core::TCPSession
          TCPSession (EPoll &ePoll, TCPServer &server)
           
          TCPSession (EPoll &ePoll, TCPServer &server, std::string text)
           
          virtual void output (std::stringstream &data)
           
          void send (std::string data)
           
          void sendToAll (std::string data)
           
          void sendToAll (SessionFilter filter, std::string data)
           
          - Public Member Functions inherited from core::TCPSocket
          TCPSocket (EPoll &ePoll)
           
          TCPSocket (EPoll &ePoll, std::string text)
           
          +void connect (IPAddress &address)
           
          - Public Member Functions inherited from core::Socket
          Socket (EPoll &ePoll)
           
          Socket (EPoll &ePoll, std::string text)
           
          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, pid_t threadId)
           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 onRegistered ()
           
          virtual void onUnregister ()
           Called when the socket has finished unregistering for the epoll processing. More...
           
          +bool needsToWrite ()
           
          + + + + + + + + + + + + + + + + + + + +

          +Protected Member Functions

          void protocol (std::stringstream &out, std::string data) override
           
          - Protected Member Functions inherited from core::TCPSession
          virtual void onDataReceived (std::string data) override
           Called when data is received from the socket. More...
           
          virtual void onRegister () override
           Called when the socket has finished registering with the epoll processing. More...
           
          virtual void onConnected (std::stringstream &out)
           
          - Protected Member Functions inherited from core::Socket
          +void setBufferSize (int length)
           
          +virtual void onDataReceived (char *buffer, int len)
           
          virtual void receiveData (char *buffer, int bufferLength)
           
          + + + + + + + + + + + + + + + + + + + + + + + + + +

          +Additional Inherited Members

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

          Detailed Description

          +

          ConsoleSession

          +

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

          +

          Member Function Documentation

          + +

          ◆ protocol()

          + +
          +
          + + + + + +
          + + + + + + + + + + + + + + + + + + +
          void core::ConsoleSession::protocol (std::stringstream & out,
          std::string data = "" 
          )
          +
          +overrideprotectedvirtual
          +
          +

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

          + +

          Reimplemented from core::TCPSession.

          + +
          +
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/ConsoleSession.h
          • +
          • /home/bradarant/barant/ServerCore/ConsoleSession.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_console_session__coll__graph.map b/latex/html/classcore_1_1_console_session__coll__graph.map new file mode 100644 index 0000000..7c1b50f --- /dev/null +++ b/latex/html/classcore_1_1_console_session__coll__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/latex/html/classcore_1_1_console_session__coll__graph.md5 b/latex/html/classcore_1_1_console_session__coll__graph.md5 new file mode 100644 index 0000000..ee3a794 --- /dev/null +++ b/latex/html/classcore_1_1_console_session__coll__graph.md5 @@ -0,0 +1 @@ +8811dc4af13cfed420351e0d9614642c \ No newline at end of file diff --git a/latex/html/classcore_1_1_console_session__coll__graph.png b/latex/html/classcore_1_1_console_session__coll__graph.png new file mode 100644 index 0000000..248f32f Binary files /dev/null and b/latex/html/classcore_1_1_console_session__coll__graph.png differ diff --git a/latex/html/classcore_1_1_console_session__inherit__graph.map b/latex/html/classcore_1_1_console_session__inherit__graph.map new file mode 100644 index 0000000..f41d33a --- /dev/null +++ b/latex/html/classcore_1_1_console_session__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/latex/html/classcore_1_1_console_session__inherit__graph.md5 b/latex/html/classcore_1_1_console_session__inherit__graph.md5 new file mode 100644 index 0000000..2b3d931 --- /dev/null +++ b/latex/html/classcore_1_1_console_session__inherit__graph.md5 @@ -0,0 +1 @@ +3e652c0f1f63b8cd33fe6d08445250dc \ No newline at end of file diff --git a/latex/html/classcore_1_1_console_session__inherit__graph.png b/latex/html/classcore_1_1_console_session__inherit__graph.png new file mode 100644 index 0000000..df45229 Binary files /dev/null and b/latex/html/classcore_1_1_console_session__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_e_poll-members.html b/latex/html/classcore_1_1_e_poll-members.html new file mode 100644 index 0000000..6519417 --- /dev/null +++ b/latex/html/classcore_1_1_e_poll-members.html @@ -0,0 +1,97 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::EPoll Member List
          +
          +
          + +

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

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

          #include <EPoll.h>

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

          +Public Member Functions

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

          +Public Attributes

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

          Detailed Description

          +

          EPoll

          +

          Manage socket events from the epoll system call.

          +

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

          +

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

          +

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

          +

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

          +

          Constructor & Destructor Documentation

          + +

          ◆ EPoll()

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

          The constructor for the BMAEPoll object.

          + +
          +
          + +

          ◆ ~EPoll()

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

          The destructor for the BMAEPoll object.

          + +
          +
          +

          Member Function Documentation

          + +

          ◆ eventReceived()

          + +
          +
          + + + + + + + + + + + + + + + + + + +
          void core::EPoll::eventReceived (struct epoll_event event,
          pid_t threadId 
          )
          +
          + +

          Dispatch event to appropriate socket.

          +

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

          + +
          +
          + +

          ◆ getDescriptor()

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

          Return the descriptor for the ePoll socket.

          +

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

          + +
          +
          + +

          ◆ isStopping()

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

          Returns a true if the stop command has been requested.

          +

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

          + +
          +
          + +

          ◆ processCommand()

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

          Output the threads array to the console.

          +

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

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

          Reimplemented from core::Command.

          + +
          +
          + +

          ◆ registerSocket()

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

          Register a BMASocket for monitoring by BMAEPoll.

          +

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

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

          ◆ start()

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

          Start the BMAEPoll processing.

          +

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

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

          ◆ stop()

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

          Stop and shut down the BMAEPoll processing.

          +

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

          +

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

          + +
          +
          + +

          ◆ unregisterSocket()

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

          Unregister a BMASocket from monitoring by BMAEPoll.

          +

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

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

          Member Data Documentation

          + +

          ◆ maxSockets

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

          The maximum number of socket allowed.

          +

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

          + +
          +
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/EPoll.h
          • +
          • /home/bradarant/barant/ServerCore/EPoll.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_e_poll__coll__graph.map b/latex/html/classcore_1_1_e_poll__coll__graph.map new file mode 100644 index 0000000..f8fa3a7 --- /dev/null +++ b/latex/html/classcore_1_1_e_poll__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/latex/html/classcore_1_1_e_poll__coll__graph.md5 b/latex/html/classcore_1_1_e_poll__coll__graph.md5 new file mode 100644 index 0000000..9a32398 --- /dev/null +++ b/latex/html/classcore_1_1_e_poll__coll__graph.md5 @@ -0,0 +1 @@ +c75340d7c5a82ba0c2ab4d100006cfa2 \ No newline at end of file diff --git a/latex/html/classcore_1_1_e_poll__coll__graph.png b/latex/html/classcore_1_1_e_poll__coll__graph.png new file mode 100644 index 0000000..1af8f75 Binary files /dev/null and b/latex/html/classcore_1_1_e_poll__coll__graph.png differ diff --git a/latex/html/classcore_1_1_e_poll__inherit__graph.map b/latex/html/classcore_1_1_e_poll__inherit__graph.map new file mode 100644 index 0000000..f8fa3a7 --- /dev/null +++ b/latex/html/classcore_1_1_e_poll__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/latex/html/classcore_1_1_e_poll__inherit__graph.md5 b/latex/html/classcore_1_1_e_poll__inherit__graph.md5 new file mode 100644 index 0000000..5ac5bad --- /dev/null +++ b/latex/html/classcore_1_1_e_poll__inherit__graph.md5 @@ -0,0 +1 @@ +addfef9e1ecea7461431caef8589e67c \ No newline at end of file diff --git a/latex/html/classcore_1_1_e_poll__inherit__graph.png b/latex/html/classcore_1_1_e_poll__inherit__graph.png new file mode 100644 index 0000000..1af8f75 Binary files /dev/null and b/latex/html/classcore_1_1_e_poll__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_i_notify-members.html b/latex/html/classcore_1_1_i_notify-members.html new file mode 100644 index 0000000..1aa8949 --- /dev/null +++ b/latex/html/classcore_1_1_i_notify-members.html @@ -0,0 +1,120 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::INotify Member List
          +
          +
          + +

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

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          active (defined in core::Socket)core::Socketprivate
          addWatch(std::string watch) (defined in core::INotify)core::INotify
          bufferSize (defined in core::Socket)core::Socketprivate
          ePoll (defined in core::Socket)core::Socketprivate
          eventReceived(struct epoll_event event, pid_t threadId)core::Socketprivate
          getDescriptor()core::Socketprivate
          inAccess(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
          inAttrib(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
          inCloseNoWrite(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
          inCloseWrite(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
          inCreate(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
          inDelete(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
          inDeleteSelf(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
          inModify(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
          inMovedFrom(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
          inMovedTo(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
          inMoveSelf(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
          inOpen(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
          INotify(EPoll &ePoll) (defined in core::INotify)core::INotify
          name (defined in core::Object)core::Objectprivate
          needsToWrite() (defined in core::Socket)core::Socketprivate
          onDataReceived(char *buffer, int len) override (defined in core::INotify)core::INotifyvirtual
          core::Socket::onDataReceived(std::string data)core::Socketprivatevirtual
          onRegister()core::Socketprivatevirtual
          onRegistered() (defined in core::Socket)core::Socketprivatevirtual
          onUnregister()core::Socketprivatevirtual
          output(std::stringstream &out) (defined in core::Socket)core::Socketprivate
          receiveData(char *buffer, int bufferLength)core::Socketprivatevirtual
          removeWatch(int wd) (defined in core::INotify)core::INotify
          setBufferSize(int length) (defined in core::Socket)core::Socketprivate
          setDescriptor(int descriptor)core::Socketprivate
          shutdown(std::string text="unknown")core::Socketprivate
          shutDown (defined in core::Socket)core::Socketprivate
          Socket(EPoll &ePoll) (defined in core::Socket)core::Socketprivate
          Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socketprivate
          tag (defined in core::Object)core::Objectprivate
          write(std::string data)core::Socketprivate
          write(char *buffer, int length) (defined in core::Socket)core::Socketprivate
          ~INotify() (defined in core::INotify)core::INotify
          ~Socket() (defined in core::Socket)core::Socketprivate
          + + + + diff --git a/latex/html/classcore_1_1_i_notify.html b/latex/html/classcore_1_1_i_notify.html new file mode 100644 index 0000000..b9d3b61 --- /dev/null +++ b/latex/html/classcore_1_1_i_notify.html @@ -0,0 +1,156 @@ + + + + + + + +My Project: core::INotify Class Reference + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          + +
          +
          core::INotify Class Reference
          +
          +
          +
          +Inheritance diagram for core::INotify:
          +
          +
          Inheritance graph
          + + + + +
          [legend]
          +
          +Collaboration diagram for core::INotify:
          +
          +
          Collaboration graph
          + + + + + + +
          [legend]
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          +Public Member Functions

          INotify (EPoll &ePoll)
           
          +int addWatch (std::string watch)
           
          +void removeWatch (int wd)
           
          +void onDataReceived (char *buffer, int len) override
           
          +virtual void inAccess (std::string name)
           
          +virtual void inAttrib (std::string name)
           
          +virtual void inCloseWrite (std::string name)
           
          +virtual void inCloseNoWrite (std::string name)
           
          +virtual void inCreate (std::string name)
           
          +virtual void inDelete (std::string name)
           
          +virtual void inDeleteSelf (std::string name)
           
          +virtual void inModify (std::string name)
           
          +virtual void inMoveSelf (std::string name)
           
          +virtual void inMovedFrom (std::string name)
           
          +virtual void inMovedTo (std::string name)
           
          +virtual void inOpen (std::string name)
           
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/INotify.h
          • +
          • /home/bradarant/barant/ServerCore/INotify.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_i_notify__coll__graph.map b/latex/html/classcore_1_1_i_notify__coll__graph.map new file mode 100644 index 0000000..47564e7 --- /dev/null +++ b/latex/html/classcore_1_1_i_notify__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/latex/html/classcore_1_1_i_notify__coll__graph.md5 b/latex/html/classcore_1_1_i_notify__coll__graph.md5 new file mode 100644 index 0000000..26e6650 --- /dev/null +++ b/latex/html/classcore_1_1_i_notify__coll__graph.md5 @@ -0,0 +1 @@ +07bd8af486f7288911f3b1827d2d490f \ No newline at end of file diff --git a/latex/html/classcore_1_1_i_notify__coll__graph.png b/latex/html/classcore_1_1_i_notify__coll__graph.png new file mode 100644 index 0000000..473cbe3 Binary files /dev/null and b/latex/html/classcore_1_1_i_notify__coll__graph.png differ diff --git a/latex/html/classcore_1_1_i_notify__inherit__graph.map b/latex/html/classcore_1_1_i_notify__inherit__graph.map new file mode 100644 index 0000000..f2b86f8 --- /dev/null +++ b/latex/html/classcore_1_1_i_notify__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/latex/html/classcore_1_1_i_notify__inherit__graph.md5 b/latex/html/classcore_1_1_i_notify__inherit__graph.md5 new file mode 100644 index 0000000..064f278 --- /dev/null +++ b/latex/html/classcore_1_1_i_notify__inherit__graph.md5 @@ -0,0 +1 @@ +6e0b4f2017c2334e48b33395a8718bbf \ No newline at end of file diff --git a/latex/html/classcore_1_1_i_notify__inherit__graph.png b/latex/html/classcore_1_1_i_notify__inherit__graph.png new file mode 100644 index 0000000..1335acb Binary files /dev/null and b/latex/html/classcore_1_1_i_notify__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_i_p_address-members.html b/latex/html/classcore_1_1_i_p_address-members.html new file mode 100644 index 0000000..3e41bd9 --- /dev/null +++ b/latex/html/classcore_1_1_i_p_address-members.html @@ -0,0 +1,92 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::IPAddress Member List
          +
          +
          + +

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

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

          +Public Member Functions

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

          +Public Attributes

          +struct sockaddr_in addr
           
          +socklen_t addressLength
           
          - Public Attributes inherited from core::Object
          +std::string name
           
          +std::string tag
           
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/IPAddress.h
          • +
          • /home/bradarant/barant/ServerCore/IPAddress.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_i_p_address__coll__graph.map b/latex/html/classcore_1_1_i_p_address__coll__graph.map new file mode 100644 index 0000000..58eac7e --- /dev/null +++ b/latex/html/classcore_1_1_i_p_address__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/latex/html/classcore_1_1_i_p_address__coll__graph.md5 b/latex/html/classcore_1_1_i_p_address__coll__graph.md5 new file mode 100644 index 0000000..89a89a4 --- /dev/null +++ b/latex/html/classcore_1_1_i_p_address__coll__graph.md5 @@ -0,0 +1 @@ +c805616539c6f4a1201bc6f8bb4a8947 \ No newline at end of file diff --git a/latex/html/classcore_1_1_i_p_address__coll__graph.png b/latex/html/classcore_1_1_i_p_address__coll__graph.png new file mode 100644 index 0000000..4ca1e1f Binary files /dev/null and b/latex/html/classcore_1_1_i_p_address__coll__graph.png differ diff --git a/latex/html/classcore_1_1_i_p_address__inherit__graph.map b/latex/html/classcore_1_1_i_p_address__inherit__graph.map new file mode 100644 index 0000000..58eac7e --- /dev/null +++ b/latex/html/classcore_1_1_i_p_address__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/latex/html/classcore_1_1_i_p_address__inherit__graph.md5 b/latex/html/classcore_1_1_i_p_address__inherit__graph.md5 new file mode 100644 index 0000000..9e9fdfc --- /dev/null +++ b/latex/html/classcore_1_1_i_p_address__inherit__graph.md5 @@ -0,0 +1 @@ +169afbf207aa8295752439747ffd68a2 \ No newline at end of file diff --git a/latex/html/classcore_1_1_i_p_address__inherit__graph.png b/latex/html/classcore_1_1_i_p_address__inherit__graph.png new file mode 100644 index 0000000..4ca1e1f Binary files /dev/null and b/latex/html/classcore_1_1_i_p_address__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_i_p_address_list-members.html b/latex/html/classcore_1_1_i_p_address_list-members.html new file mode 100644 index 0000000..e96b951 --- /dev/null +++ b/latex/html/classcore_1_1_i_p_address_list-members.html @@ -0,0 +1,85 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::IPAddressList Member List
          +
          +
          + +

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

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

          +Public Member Functions

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

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

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

          +Public Attributes

          +std::string name
           
          +std::string tag
           
          +
          The documentation for this class was generated from the following file:
            +
          • /home/bradarant/barant/ServerCore/Object.h
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_object__inherit__graph.map b/latex/html/classcore_1_1_object__inherit__graph.map new file mode 100644 index 0000000..c286ebd --- /dev/null +++ b/latex/html/classcore_1_1_object__inherit__graph.map @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/latex/html/classcore_1_1_object__inherit__graph.md5 b/latex/html/classcore_1_1_object__inherit__graph.md5 new file mode 100644 index 0000000..a65f7cd --- /dev/null +++ b/latex/html/classcore_1_1_object__inherit__graph.md5 @@ -0,0 +1 @@ +fde715ed48b88d2243d3c6a72c9cee36 \ No newline at end of file diff --git a/latex/html/classcore_1_1_object__inherit__graph.png b/latex/html/classcore_1_1_object__inherit__graph.png new file mode 100644 index 0000000..de6c65e Binary files /dev/null and b/latex/html/classcore_1_1_object__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_session_filter-members.html b/latex/html/classcore_1_1_session_filter-members.html new file mode 100644 index 0000000..0b97094 --- /dev/null +++ b/latex/html/classcore_1_1_session_filter-members.html @@ -0,0 +1,83 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::SessionFilter Member List
          +
          +
          + +

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

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

          +Public Member Functions

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

          +Additional Inherited Members

          - Public Attributes inherited from core::Object
          +std::string name
           
          +std::string tag
           
          +
          The documentation for this class was generated from the following file: +
          + + + + diff --git a/latex/html/classcore_1_1_session_filter__coll__graph.map b/latex/html/classcore_1_1_session_filter__coll__graph.map new file mode 100644 index 0000000..c37e30c --- /dev/null +++ b/latex/html/classcore_1_1_session_filter__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/latex/html/classcore_1_1_session_filter__coll__graph.md5 b/latex/html/classcore_1_1_session_filter__coll__graph.md5 new file mode 100644 index 0000000..03a8579 --- /dev/null +++ b/latex/html/classcore_1_1_session_filter__coll__graph.md5 @@ -0,0 +1 @@ +97891e0f4daebeb83feaf9d169c0a749 \ No newline at end of file diff --git a/latex/html/classcore_1_1_session_filter__coll__graph.png b/latex/html/classcore_1_1_session_filter__coll__graph.png new file mode 100644 index 0000000..8512724 Binary files /dev/null and b/latex/html/classcore_1_1_session_filter__coll__graph.png differ diff --git a/latex/html/classcore_1_1_session_filter__inherit__graph.map b/latex/html/classcore_1_1_session_filter__inherit__graph.map new file mode 100644 index 0000000..c37e30c --- /dev/null +++ b/latex/html/classcore_1_1_session_filter__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/latex/html/classcore_1_1_session_filter__inherit__graph.md5 b/latex/html/classcore_1_1_session_filter__inherit__graph.md5 new file mode 100644 index 0000000..5057701 --- /dev/null +++ b/latex/html/classcore_1_1_session_filter__inherit__graph.md5 @@ -0,0 +1 @@ +202e7b44c4a5ef1bdc5cf673c0a8377c \ No newline at end of file diff --git a/latex/html/classcore_1_1_session_filter__inherit__graph.png b/latex/html/classcore_1_1_session_filter__inherit__graph.png new file mode 100644 index 0000000..8512724 Binary files /dev/null and b/latex/html/classcore_1_1_session_filter__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_socket-members.html b/latex/html/classcore_1_1_socket-members.html new file mode 100644 index 0000000..ed7370f --- /dev/null +++ b/latex/html/classcore_1_1_socket-members.html @@ -0,0 +1,104 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::Socket Member List
          +
          +
          + +

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

          + + + + + + + + + + + + + + + + + + + + + + + + + +
          active (defined in core::Socket)core::Socket
          bufferSize (defined in core::Socket)core::Socket
          ePoll (defined in core::Socket)core::Socketprotected
          eventReceived(struct epoll_event event, pid_t threadId)core::Socket
          getDescriptor()core::Socket
          name (defined in core::Object)core::Object
          needsToWrite() (defined in core::Socket)core::Socket
          onDataReceived(std::string data)core::Socketprotectedvirtual
          onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
          onRegister()core::Socketvirtual
          onRegistered() (defined in core::Socket)core::Socketvirtual
          onUnregister()core::Socketvirtual
          output(std::stringstream &out) (defined in core::Socket)core::Socket
          receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
          setBufferSize(int length) (defined in core::Socket)core::Socketprotected
          setDescriptor(int descriptor)core::Socket
          shutDown (defined in core::Socket)core::Socketprotected
          shutdown(std::string text="unknown")core::Socket
          Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
          Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
          tag (defined in core::Object)core::Object
          write(std::string data)core::Socket
          write(char *buffer, int length) (defined in core::Socket)core::Socket
          ~Socket() (defined in core::Socket)core::Socket
          + + + + diff --git a/latex/html/classcore_1_1_socket.html b/latex/html/classcore_1_1_socket.html new file mode 100644 index 0000000..c0e33a6 --- /dev/null +++ b/latex/html/classcore_1_1_socket.html @@ -0,0 +1,434 @@ + + + + + + + +My Project: core::Socket Class Reference + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          + +
          + +

          #include <Socket.h>

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

          +Public Member Functions

          Socket (EPoll &ePoll)
           
          Socket (EPoll &ePoll, std::string text)
           
          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, pid_t threadId)
           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 when the socket has finished registering with the epoll processing. More...
           
          +virtual void onRegistered ()
           
          virtual void onUnregister ()
           Called when the socket has finished unregistering for the epoll processing. More...
           
          +bool needsToWrite ()
           
          + + + + + + + + + + + +

          +Public Attributes

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

          +Protected Member Functions

          +void setBufferSize (int length)
           
          virtual void onDataReceived (std::string data)
           Called when data is received from the socket. More...
           
          +virtual void onDataReceived (char *buffer, int len)
           
          virtual void receiveData (char *buffer, int bufferLength)
           
          + + + + + +

          +Protected Attributes

          +EPollePoll
           
          +bool shutDown = false
           
          +

          Detailed Description

          +

          Socket

          +

          The core component to managing a socket.

          +

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

          +

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

          +

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

          +

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

          +

          Member Function Documentation

          + +

          ◆ eventReceived()

          + +
          +
          + + + + + + + + + + + + + + + + + + +
          bool core::Socket::eventReceived (struct epoll_event event,
          pid_t threadId 
          )
          +
          + +

          Parse epoll event and call specified callbacks.

          +

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

          +

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

          + +
          +
          + +

          ◆ onDataReceived()

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

          Called when data is received from the socket.

          +

          The onConnected method is called when the socket is ready to communicate. Writing to the socket can begin on this call to initiate a contact with the remote device. The onDataReceived method is called when the socket has received an event from epoll and there is data ready to be read from the socket. The default handler will pull the data and put it into the streambuf for the socket. EPOLLIN

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

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

          + +
          +
          + +

          ◆ onRegister()

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

          Called when the socket has finished registering 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::TCPSession, and core::TLSSession.

          + +
          +
          + +

          ◆ onUnregister()

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

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

          +

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

          + +
          +
          + +

          ◆ receiveData()

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

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

          + +

          Reimplemented in core::TLSSession.

          + +
          +
          + +

          ◆ setDescriptor()

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

          Set the descriptor for the socket.

          +

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

          + +
          +
          + +

          ◆ shutdown()

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

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

          + +
          +
          + +

          ◆ write()

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

          Write data to the socket.

          + +
          +
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/Socket.h
          • +
          • /home/bradarant/barant/ServerCore/Socket.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_socket__coll__graph.map b/latex/html/classcore_1_1_socket__coll__graph.map new file mode 100644 index 0000000..07b4168 --- /dev/null +++ b/latex/html/classcore_1_1_socket__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/latex/html/classcore_1_1_socket__coll__graph.md5 b/latex/html/classcore_1_1_socket__coll__graph.md5 new file mode 100644 index 0000000..0c2b71a --- /dev/null +++ b/latex/html/classcore_1_1_socket__coll__graph.md5 @@ -0,0 +1 @@ +9222de1678a30c93981eb03a14021f42 \ No newline at end of file diff --git a/latex/html/classcore_1_1_socket__coll__graph.png b/latex/html/classcore_1_1_socket__coll__graph.png new file mode 100644 index 0000000..50d6e28 Binary files /dev/null and b/latex/html/classcore_1_1_socket__coll__graph.png differ diff --git a/latex/html/classcore_1_1_socket__inherit__graph.map b/latex/html/classcore_1_1_socket__inherit__graph.map new file mode 100644 index 0000000..2970e7f --- /dev/null +++ b/latex/html/classcore_1_1_socket__inherit__graph.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/latex/html/classcore_1_1_socket__inherit__graph.md5 b/latex/html/classcore_1_1_socket__inherit__graph.md5 new file mode 100644 index 0000000..20b2964 --- /dev/null +++ b/latex/html/classcore_1_1_socket__inherit__graph.md5 @@ -0,0 +1 @@ +660e40023e75eb2cb6f4713f677f4141 \ No newline at end of file diff --git a/latex/html/classcore_1_1_socket__inherit__graph.png b/latex/html/classcore_1_1_socket__inherit__graph.png new file mode 100644 index 0000000..33aa544 Binary files /dev/null and b/latex/html/classcore_1_1_socket__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_t_c_p_server-members.html b/latex/html/classcore_1_1_t_c_p_server-members.html new file mode 100644 index 0000000..e022182 --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_server-members.html @@ -0,0 +1,125 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::TCPServer Member List
          +
          +
          + +

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

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

          #include <TCPServer.h>

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

          +Public Member Functions

           TCPServer (EPoll &ePoll, IPAddress address, std::string text="")
           
           ~TCPServer ()
           
          +void removeFromSessionList (TCPSession *session)
           
          +virtual void sessionErrorHandler (std::string errorString, std::stringstream &out)
           
          virtual TCPSessiongetSocketAccept (EPoll &epoll)
           
          +void output (TCPSession *session)
           Output the consoles array to the console.
           
          - Public Member Functions inherited from core::TCPSocket
          TCPSocket (EPoll &ePoll)
           
          TCPSocket (EPoll &ePoll, std::string text)
           
          +void connect (IPAddress &address)
           
          virtual void output (std::stringstream &out)
           
          - Public Member Functions inherited from core::Socket
          Socket (EPoll &ePoll)
           
          Socket (EPoll &ePoll, std::string text)
           
          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, pid_t threadId)
           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 when the socket has finished registering with the epoll processing. More...
           
          +virtual void onRegistered ()
           
          virtual void onUnregister ()
           Called when the socket has finished unregistering for the epoll processing. More...
           
          +bool needsToWrite ()
           
          - Public Member Functions inherited from core::Command
          virtual bool check (std::string request)
           
          virtual void output (Session *session)
           
          void setName (std::string name)
           
          +std::string getName ()
           
          + + + + + + + + + + + + + + + + + + + + + + + +

          +Public Attributes

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

          +Protected Member Functions

          void onDataReceived (std::string data) override
           
          int processCommand (std::string command, TCPSession *session, std::stringstream &data) override
           
          - Protected Member Functions inherited from core::Socket
          +void setBufferSize (int length)
           
          +virtual void onDataReceived (char *buffer, int len)
           
          virtual void receiveData (char *buffer, int bufferLength)
           
          + + + + + + +

          +Additional Inherited Members

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

          Detailed Description

          +

          TCPServer

          +

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

          +

          A list of connections is maintained in a vector object.

          +

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

          +

          Constructor & Destructor Documentation

          + +

          ◆ TCPServer()

          + +
          +
          + + + + + + + + + + + + + + + + + + + + + + + + +
          core::TCPServer::TCPServer (EPollePoll,
          IPAddress address,
          std::string text = "" 
          )
          +
          +

          The constructor for the BMATCPSocket object.

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

          ◆ ~TCPServer()

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

          The destructor for this object.

          + +
          +
          +

          Member Function Documentation

          + +

          ◆ getSocketAccept()

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

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

          + +

          Reimplemented in core::ConsoleServer.

          + +
          +
          + +

          ◆ onDataReceived()

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

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

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

          Reimplemented from core::Socket.

          + +
          +
          + +

          ◆ processCommand()

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

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

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

          Reimplemented from core::Command.

          + +
          +
          +

          Member Data Documentation

          + +

          ◆ blackList

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

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

          + +
          +
          + +

          ◆ commands

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

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

          + +
          +
          + +

          ◆ sessions

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

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

          + +
          +
          + +

          ◆ whiteList

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

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

          + +
          +
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/TCPServer.h
          • +
          • /home/bradarant/barant/ServerCore/TCPServer.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_t_c_p_server__coll__graph.map b/latex/html/classcore_1_1_t_c_p_server__coll__graph.map new file mode 100644 index 0000000..f334110 --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_server__coll__graph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/latex/html/classcore_1_1_t_c_p_server__coll__graph.md5 b/latex/html/classcore_1_1_t_c_p_server__coll__graph.md5 new file mode 100644 index 0000000..9d4d900 --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_server__coll__graph.md5 @@ -0,0 +1 @@ +8040187a3f4d32aca801941e24590f63 \ No newline at end of file diff --git a/latex/html/classcore_1_1_t_c_p_server__coll__graph.png b/latex/html/classcore_1_1_t_c_p_server__coll__graph.png new file mode 100644 index 0000000..ea36462 Binary files /dev/null and b/latex/html/classcore_1_1_t_c_p_server__coll__graph.png differ diff --git a/latex/html/classcore_1_1_t_c_p_server__inherit__graph.map b/latex/html/classcore_1_1_t_c_p_server__inherit__graph.map new file mode 100644 index 0000000..8de9ce5 --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_server__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/latex/html/classcore_1_1_t_c_p_server__inherit__graph.md5 b/latex/html/classcore_1_1_t_c_p_server__inherit__graph.md5 new file mode 100644 index 0000000..3fb9392 --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_server__inherit__graph.md5 @@ -0,0 +1 @@ +58cbfed5e667546aaec07d655555a44f \ No newline at end of file diff --git a/latex/html/classcore_1_1_t_c_p_server__inherit__graph.png b/latex/html/classcore_1_1_t_c_p_server__inherit__graph.png new file mode 100644 index 0000000..d83178b Binary files /dev/null and b/latex/html/classcore_1_1_t_c_p_server__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_t_c_p_session-members.html b/latex/html/classcore_1_1_t_c_p_session-members.html new file mode 100644 index 0000000..297acd0 --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_session-members.html @@ -0,0 +1,119 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::TCPSession Member List
          +
          +
          + +

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

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          active (defined in core::Socket)core::Socket
          bufferSize (defined in core::Socket)core::Socket
          connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
          ePoll (defined in core::Socket)core::Socketprotected
          eventReceived(struct epoll_event event, pid_t threadId)core::Socket
          getDescriptor()core::Socket
          grab (defined in core::TCPSession)core::TCPSession
          ipAddress (defined in core::TCPSocket)core::TCPSocket
          name (defined in core::Object)core::Object
          needsToWrite() (defined in core::Socket)core::Socket
          onConnected(std::stringstream &out)core::TCPSessionprotectedvirtual
          onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
          onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
          onRegister() overridecore::TCPSessionprotectedvirtual
          onRegistered() (defined in core::Socket)core::Socketvirtual
          onUnregister()core::Socketvirtual
          output(std::stringstream &data)core::TCPSessionvirtual
          protocol(std::stringstream &out, std::string data)core::TCPSessionprotectedvirtual
          receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
          send(std::string data)core::TCPSession
          sendToAll(std::string data)core::TCPSession
          sendToAll(SessionFilter filter, std::string data)core::TCPSession
          server (defined in core::TCPSession)core::TCPSession
          setBufferSize(int length) (defined in core::Socket)core::Socketprotected
          setDescriptor(int descriptor)core::Socket
          shutdown(std::string text="unknown")core::Socket
          shutDown (defined in core::Socket)core::Socketprotected
          Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
          Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
          tag (defined in core::Object)core::Object
          TCPSession(EPoll &ePoll, TCPServer &server) (defined in core::TCPSession)core::TCPSession
          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
          write(std::string data)core::Socket
          write(char *buffer, int length) (defined in core::Socket)core::Socket
          ~Socket() (defined in core::Socket)core::Socket
          ~TCPSession() (defined in core::TCPSession)core::TCPSession
          ~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
          + + + + diff --git a/latex/html/classcore_1_1_t_c_p_session.html b/latex/html/classcore_1_1_t_c_p_session.html new file mode 100644 index 0000000..4e2ac0a --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_session.html @@ -0,0 +1,478 @@ + + + + + + + +My Project: core::TCPSession Class Reference + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          + +
          + +

          #include <TCPSession.h>

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

          +Public Member Functions

          TCPSession (EPoll &ePoll, TCPServer &server)
           
          TCPSession (EPoll &ePoll, TCPServer &server, std::string text)
           
          virtual void output (std::stringstream &data)
           
          void send (std::string data)
           
          void sendToAll (std::string data)
           
          void sendToAll (SessionFilter filter, std::string data)
           
          - Public Member Functions inherited from core::TCPSocket
          TCPSocket (EPoll &ePoll)
           
          TCPSocket (EPoll &ePoll, std::string text)
           
          +void connect (IPAddress &address)
           
          - Public Member Functions inherited from core::Socket
          Socket (EPoll &ePoll)
           
          Socket (EPoll &ePoll, std::string text)
           
          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, pid_t threadId)
           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 onRegistered ()
           
          virtual void onUnregister ()
           Called when the socket has finished unregistering for the epoll processing. More...
           
          +bool needsToWrite ()
           
          + + + + + + + + + + + + + + + + + + + +

          +Public Attributes

          +Commandgrab = NULL
           
          +TCPServerserver
           
          - Public Attributes inherited from core::TCPSocket
          +IPAddress ipAddress
           
          - Public Attributes inherited from core::Socket
          +class {
          bufferSize
           
          +bool active = false
           
          - Public Attributes inherited from core::Object
          +std::string name
           
          +std::string tag
           
          + + + + + + + + + + + + + + + + + + +

          +Protected Member Functions

          virtual void onDataReceived (std::string data) override
           Called when data is received from the socket. More...
           
          virtual void onRegister () override
           Called when the socket has finished registering with the epoll processing. More...
           
          virtual void onConnected (std::stringstream &out)
           
          virtual void protocol (std::stringstream &out, std::string data)
           
          - Protected Member Functions inherited from core::Socket
          +void setBufferSize (int length)
           
          +virtual void onDataReceived (char *buffer, int len)
           
          virtual void receiveData (char *buffer, int bufferLength)
           
          + + + + + + +

          +Additional Inherited Members

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

          Detailed Description

          +

          TCPSession

          +

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

          +

          Member Function Documentation

          + +

          ◆ onConnected()

          + +
          +
          + + + + + +
          + + + + + + + + +
          void core::TCPSession::onConnected (std::stringstream & out)
          +
          +protectedvirtual
          +
          +

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

          + +
          +
          + +

          ◆ onDataReceived()

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

          Called when data is received from the socket.

          +

          The onConnected method is called when the socket is ready to communicate. Writing to the socket can begin on this call to initiate a contact with the remote device. The onDataReceived method is called when the socket has received an event from epoll and there is data ready to be read from the socket. The default handler will pull the data and put it into the streambuf for the socket. EPOLLIN

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

          Reimplemented from core::Socket.

          + +
          +
          + +

          ◆ onRegister()

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

          Called when the socket has finished registering 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.

          + +

          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::stringstream & out,
          std::string data = "" 
          )
          +
          +protectedvirtual
          +
          +

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

          + +

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

          + +
          +
          + +

          ◆ send()

          + +
          +
          + + + + + + + + +
          void core::TCPSession::send (std::string data)
          +
          +

          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 (std::string data)
          +
          +

          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,
          std::string data 
          )
          +
          +

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

          + +
          +
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/TCPSession.h
          • +
          • /home/bradarant/barant/ServerCore/TCPSession.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_t_c_p_session__coll__graph.map b/latex/html/classcore_1_1_t_c_p_session__coll__graph.map new file mode 100644 index 0000000..2942b39 --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_session__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/latex/html/classcore_1_1_t_c_p_session__coll__graph.md5 b/latex/html/classcore_1_1_t_c_p_session__coll__graph.md5 new file mode 100644 index 0000000..d915da5 --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_session__coll__graph.md5 @@ -0,0 +1 @@ +590ae1934fdb76c6225a795e2bbf6662 \ No newline at end of file diff --git a/latex/html/classcore_1_1_t_c_p_session__coll__graph.png b/latex/html/classcore_1_1_t_c_p_session__coll__graph.png new file mode 100644 index 0000000..60866bd Binary files /dev/null and b/latex/html/classcore_1_1_t_c_p_session__coll__graph.png differ diff --git a/latex/html/classcore_1_1_t_c_p_session__inherit__graph.map b/latex/html/classcore_1_1_t_c_p_session__inherit__graph.map new file mode 100644 index 0000000..b9de6ba --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_session__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/latex/html/classcore_1_1_t_c_p_session__inherit__graph.md5 b/latex/html/classcore_1_1_t_c_p_session__inherit__graph.md5 new file mode 100644 index 0000000..14c54ff --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_session__inherit__graph.md5 @@ -0,0 +1 @@ +3018ac79647b668426ba37e206af125b \ No newline at end of file diff --git a/latex/html/classcore_1_1_t_c_p_session__inherit__graph.png b/latex/html/classcore_1_1_t_c_p_session__inherit__graph.png new file mode 100644 index 0000000..a4fd755 Binary files /dev/null and b/latex/html/classcore_1_1_t_c_p_session__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_t_c_p_socket-members.html b/latex/html/classcore_1_1_t_c_p_socket-members.html new file mode 100644 index 0000000..5fc0784 --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_socket-members.html @@ -0,0 +1,109 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::TCPSocket Member List
          +
          +
          + +

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

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          active (defined in core::Socket)core::Socket
          bufferSize (defined in core::Socket)core::Socket
          connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
          ePoll (defined in core::Socket)core::Socketprotected
          eventReceived(struct epoll_event event, pid_t threadId)core::Socket
          getDescriptor()core::Socket
          ipAddress (defined in core::TCPSocket)core::TCPSocket
          name (defined in core::Object)core::Object
          needsToWrite() (defined in core::Socket)core::Socket
          onDataReceived(std::string data)core::Socketprotectedvirtual
          onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
          onRegister()core::Socketvirtual
          onRegistered() (defined in core::Socket)core::Socketvirtual
          onUnregister()core::Socketvirtual
          output(std::stringstream &out)core::TCPSocketvirtual
          receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
          setBufferSize(int length) (defined in core::Socket)core::Socketprotected
          setDescriptor(int descriptor)core::Socket
          shutDown (defined in core::Socket)core::Socketprotected
          shutdown(std::string text="unknown")core::Socket
          Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
          Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
          tag (defined in core::Object)core::Object
          TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
          TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket
          write(std::string data)core::Socket
          write(char *buffer, int length) (defined in core::Socket)core::Socket
          ~Socket() (defined in core::Socket)core::Socket
          ~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
          + + + + diff --git a/latex/html/classcore_1_1_t_c_p_socket.html b/latex/html/classcore_1_1_t_c_p_socket.html new file mode 100644 index 0000000..a5dba06 --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_socket.html @@ -0,0 +1,246 @@ + + + + + + + +My Project: core::TCPSocket Class Reference + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          + +
          +
          core::TCPSocket Class Reference
          +
          +
          + +

          #include <TCPSocket.h>

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

          +Public Member Functions

          TCPSocket (EPoll &ePoll)
           
          TCPSocket (EPoll &ePoll, std::string text)
           
          +void connect (IPAddress &address)
           
          virtual void output (std::stringstream &out)
           
          - Public Member Functions inherited from core::Socket
          Socket (EPoll &ePoll)
           
          Socket (EPoll &ePoll, std::string text)
           
          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, pid_t threadId)
           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 when the socket has finished registering with the epoll processing. More...
           
          +virtual void onRegistered ()
           
          virtual void onUnregister ()
           Called when the socket has finished unregistering for the epoll processing. More...
           
          +bool needsToWrite ()
           
          + + + + + + + + + + + + + + +

          +Public Attributes

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

          +Additional Inherited Members

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

          Detailed Description

          +

          TCPSocket

          +

          Provides a network TCP socket.

          +

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

          +

          Member Function Documentation

          + +

          ◆ output()

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

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

          + +

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

          + +
          +
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/TCPSocket.h
          • +
          • /home/bradarant/barant/ServerCore/TCPSocket.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_t_c_p_socket__coll__graph.map b/latex/html/classcore_1_1_t_c_p_socket__coll__graph.map new file mode 100644 index 0000000..a97ed5e --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_socket__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/latex/html/classcore_1_1_t_c_p_socket__coll__graph.md5 b/latex/html/classcore_1_1_t_c_p_socket__coll__graph.md5 new file mode 100644 index 0000000..32efffb --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_socket__coll__graph.md5 @@ -0,0 +1 @@ +1791841dd7c1f189c3c7a4c31017c8d4 \ No newline at end of file diff --git a/latex/html/classcore_1_1_t_c_p_socket__coll__graph.png b/latex/html/classcore_1_1_t_c_p_socket__coll__graph.png new file mode 100644 index 0000000..5cf3a7c Binary files /dev/null and b/latex/html/classcore_1_1_t_c_p_socket__coll__graph.png differ diff --git a/latex/html/classcore_1_1_t_c_p_socket__inherit__graph.map b/latex/html/classcore_1_1_t_c_p_socket__inherit__graph.map new file mode 100644 index 0000000..bce056f --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_socket__inherit__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/latex/html/classcore_1_1_t_c_p_socket__inherit__graph.md5 b/latex/html/classcore_1_1_t_c_p_socket__inherit__graph.md5 new file mode 100644 index 0000000..454c560 --- /dev/null +++ b/latex/html/classcore_1_1_t_c_p_socket__inherit__graph.md5 @@ -0,0 +1 @@ +8cb6e083ae48c3bd9e6a218b05d88135 \ No newline at end of file diff --git a/latex/html/classcore_1_1_t_c_p_socket__inherit__graph.png b/latex/html/classcore_1_1_t_c_p_socket__inherit__graph.png new file mode 100644 index 0000000..7a3c2e0 Binary files /dev/null and b/latex/html/classcore_1_1_t_c_p_socket__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_t_l_s_server-members.html b/latex/html/classcore_1_1_t_l_s_server-members.html new file mode 100644 index 0000000..a878ea4 --- /dev/null +++ b/latex/html/classcore_1_1_t_l_s_server-members.html @@ -0,0 +1,129 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::TLSServer Member List
          +
          +
          + +

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

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

          #include <TLSServer.h>

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

          +Public Member Functions

           TLSServer (EPoll &ePoll, IPAddress address)
           
           ~TLSServer ()
           
          +TCPSessiongetSocketAccept ()
           
          - Public Member Functions inherited from core::TCPServer
           TCPServer (EPoll &ePoll, IPAddress address, std::string text="")
           
           ~TCPServer ()
           
          +void removeFromSessionList (TCPSession *session)
           
          +virtual void sessionErrorHandler (std::string errorString, std::stringstream &out)
           
          virtual TCPSessiongetSocketAccept (EPoll &epoll)
           
          +void output (TCPSession *session)
           Output the consoles array to the console.
           
          - Public Member Functions inherited from core::TCPSocket
          TCPSocket (EPoll &ePoll)
           
          TCPSocket (EPoll &ePoll, std::string text)
           
          +void connect (IPAddress &address)
           
          virtual void output (std::stringstream &out)
           
          - Public Member Functions inherited from core::Socket
          Socket (EPoll &ePoll)
           
          Socket (EPoll &ePoll, std::string text)
           
          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, pid_t threadId)
           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 when the socket has finished registering with the epoll processing. More...
           
          +virtual void onRegistered ()
           
          virtual void onUnregister ()
           Called when the socket has finished unregistering for the epoll processing. More...
           
          +bool needsToWrite ()
           
          - Public Member Functions inherited from core::Command
          virtual bool check (std::string request)
           
          virtual void output (Session *session)
           
          void setName (std::string name)
           
          +std::string getName ()
           
          + + + + + + + + + + + + + + + + + + + + + + + + + + +

          +Public Attributes

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

          +Additional Inherited Members

          - Protected Member Functions inherited from core::TCPServer
          void onDataReceived (std::string data) override
           
          int processCommand (std::string command, TCPSession *session, std::stringstream &data) override
           
          - Protected Member Functions inherited from core::Socket
          +void setBufferSize (int length)
           
          +virtual void onDataReceived (char *buffer, int len)
           
          virtual void receiveData (char *buffer, int bufferLength)
           
          - Protected Attributes inherited from core::Socket
          +EPollePoll
           
          +bool shutDown = false
           
          +

          Detailed Description

          +

          TLSServer

          +

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

          +

          Constructor & Destructor Documentation

          + +

          ◆ TLSServer()

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

          The constructor.

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

          ◆ ~TLSServer()

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

          The destructor for this object.

          + +
          +
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/TLSServer.h
          • +
          • /home/bradarant/barant/ServerCore/TLSServer.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_t_l_s_server__coll__graph.map b/latex/html/classcore_1_1_t_l_s_server__coll__graph.map new file mode 100644 index 0000000..b2b5640 --- /dev/null +++ b/latex/html/classcore_1_1_t_l_s_server__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/latex/html/classcore_1_1_t_l_s_server__coll__graph.md5 b/latex/html/classcore_1_1_t_l_s_server__coll__graph.md5 new file mode 100644 index 0000000..fd04075 --- /dev/null +++ b/latex/html/classcore_1_1_t_l_s_server__coll__graph.md5 @@ -0,0 +1 @@ +45ea7935cb57cb6ee3cbf47995bc1f17 \ No newline at end of file diff --git a/latex/html/classcore_1_1_t_l_s_server__coll__graph.png b/latex/html/classcore_1_1_t_l_s_server__coll__graph.png new file mode 100644 index 0000000..4234020 Binary files /dev/null and b/latex/html/classcore_1_1_t_l_s_server__coll__graph.png differ diff --git a/latex/html/classcore_1_1_t_l_s_server__inherit__graph.map b/latex/html/classcore_1_1_t_l_s_server__inherit__graph.map new file mode 100644 index 0000000..5758291 --- /dev/null +++ b/latex/html/classcore_1_1_t_l_s_server__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/latex/html/classcore_1_1_t_l_s_server__inherit__graph.md5 b/latex/html/classcore_1_1_t_l_s_server__inherit__graph.md5 new file mode 100644 index 0000000..fc4fe41 --- /dev/null +++ b/latex/html/classcore_1_1_t_l_s_server__inherit__graph.md5 @@ -0,0 +1 @@ +2ea5d07329f4936d5059a6de2885d417 \ No newline at end of file diff --git a/latex/html/classcore_1_1_t_l_s_server__inherit__graph.png b/latex/html/classcore_1_1_t_l_s_server__inherit__graph.png new file mode 100644 index 0000000..159d5b6 Binary files /dev/null and b/latex/html/classcore_1_1_t_l_s_server__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_t_l_s_session-members.html b/latex/html/classcore_1_1_t_l_s_session-members.html new file mode 100644 index 0000000..462d274 --- /dev/null +++ b/latex/html/classcore_1_1_t_l_s_session-members.html @@ -0,0 +1,121 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::TLSSession Member List
          +
          +
          + +

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

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          active (defined in core::Socket)core::Socket
          bufferSize (defined in core::Socket)core::Socket
          connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
          ePoll (defined in core::Socket)core::Socketprotected
          eventReceived(struct epoll_event event, pid_t threadId)core::Socket
          getDescriptor()core::Socket
          grab (defined in core::TCPSession)core::TCPSession
          ipAddress (defined in core::TCPSocket)core::TCPSocket
          name (defined in core::Object)core::Object
          needsToWrite() (defined in core::Socket)core::Socket
          onConnected(std::stringstream &out)core::TCPSessionprotectedvirtual
          onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
          onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
          onRegister()core::TLSSessionprotectedvirtual
          onRegistered() (defined in core::TLSSession)core::TLSSessionprotectedvirtual
          onUnregister()core::Socketvirtual
          output(std::stringstream &out)core::TLSSessionvirtual
          protocol(std::stringstream &out, std::string data) overridecore::TLSSessionvirtual
          receiveData(char *buffer, int bufferLength) overridecore::TLSSessionprotectedvirtual
          send(std::string data)core::TCPSession
          sendToAll(std::string data)core::TCPSession
          sendToAll(SessionFilter filter, std::string data)core::TCPSession
          server (defined in core::TCPSession)core::TCPSession
          setBufferSize(int length) (defined in core::Socket)core::Socketprotected
          setDescriptor(int descriptor)core::Socket
          shutdown(std::string text="unknown")core::Socket
          shutDown (defined in core::Socket)core::Socketprotected
          Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
          Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
          tag (defined in core::Object)core::Object
          TCPSession(EPoll &ePoll, TCPServer &server) (defined in core::TCPSession)core::TCPSession
          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
          TLSSession(EPoll &ePoll, TCPServer &server) (defined in core::TLSSession)core::TLSSession
          write(std::string data)core::Socket
          write(char *buffer, int length) (defined in core::Socket)core::Socket
          ~Socket() (defined in core::Socket)core::Socket
          ~TCPSession() (defined in core::TCPSession)core::TCPSession
          ~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
          ~TLSSession() (defined in core::TLSSession)core::TLSSession
          + + + + diff --git a/latex/html/classcore_1_1_t_l_s_session.html b/latex/html/classcore_1_1_t_l_s_session.html new file mode 100644 index 0000000..492ab5d --- /dev/null +++ b/latex/html/classcore_1_1_t_l_s_session.html @@ -0,0 +1,384 @@ + + + + + + + +My Project: core::TLSSession Class Reference + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          + +
          +
          core::TLSSession Class Reference
          +
          +
          + +

          #include <TLSSession.h>

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

          +Public Member Functions

          TLSSession (EPoll &ePoll, TCPServer &server)
           
          virtual void output (std::stringstream &out)
           
          virtual void protocol (std::stringstream &out, std::string data) override
           
          - Public Member Functions inherited from core::TCPSession
          TCPSession (EPoll &ePoll, TCPServer &server)
           
          TCPSession (EPoll &ePoll, TCPServer &server, std::string text)
           
          void send (std::string data)
           
          void sendToAll (std::string data)
           
          void sendToAll (SessionFilter filter, std::string data)
           
          - Public Member Functions inherited from core::TCPSocket
          TCPSocket (EPoll &ePoll)
           
          TCPSocket (EPoll &ePoll, std::string text)
           
          +void connect (IPAddress &address)
           
          - Public Member Functions inherited from core::Socket
          Socket (EPoll &ePoll)
           
          Socket (EPoll &ePoll, std::string text)
           
          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, pid_t threadId)
           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 ()
           Called when the socket has finished unregistering for the epoll processing. More...
           
          +bool needsToWrite ()
           
          + + + + + + + + + + + + + + + + + + + +

          +Protected Member Functions

          void receiveData (char *buffer, int bufferLength) override
           
          void onRegister ()
           Called when the socket has finished registering with the epoll processing. More...
           
          +void onRegistered ()
           
          - Protected Member Functions inherited from core::TCPSession
          virtual void onDataReceived (std::string data) override
           Called when data is received from the socket. More...
           
          virtual void onConnected (std::stringstream &out)
           
          - Protected Member Functions inherited from core::Socket
          +void setBufferSize (int length)
           
          +virtual void onDataReceived (char *buffer, int len)
           
          + + + + + + + + + + + + + + + + + + + + + + + + + +

          +Additional Inherited Members

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

          Detailed Description

          +

          TLSSession

          +

          Provides a network TLS socket.

          +

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

          +

          Member Function Documentation

          + +

          ◆ onRegister()

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

          Called when the socket has finished registering 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::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::stringstream & out,
          std::string data 
          )
          +
          +overridevirtual
          +
          +

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

          + +

          Reimplemented from core::TCPSession.

          + +
          +
          + +

          ◆ receiveData()

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

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

          + +

          Reimplemented from core::Socket.

          + +
          +
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/TLSSession.h
          • +
          • /home/bradarant/barant/ServerCore/TLSSession.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_t_l_s_session__coll__graph.map b/latex/html/classcore_1_1_t_l_s_session__coll__graph.map new file mode 100644 index 0000000..d2645ad --- /dev/null +++ b/latex/html/classcore_1_1_t_l_s_session__coll__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/latex/html/classcore_1_1_t_l_s_session__coll__graph.md5 b/latex/html/classcore_1_1_t_l_s_session__coll__graph.md5 new file mode 100644 index 0000000..3d5aad6 --- /dev/null +++ b/latex/html/classcore_1_1_t_l_s_session__coll__graph.md5 @@ -0,0 +1 @@ +8b17204dbd4c7ea835d736de899eb29a \ No newline at end of file diff --git a/latex/html/classcore_1_1_t_l_s_session__coll__graph.png b/latex/html/classcore_1_1_t_l_s_session__coll__graph.png new file mode 100644 index 0000000..45078ec Binary files /dev/null and b/latex/html/classcore_1_1_t_l_s_session__coll__graph.png differ diff --git a/latex/html/classcore_1_1_t_l_s_session__inherit__graph.map b/latex/html/classcore_1_1_t_l_s_session__inherit__graph.map new file mode 100644 index 0000000..e64f29a --- /dev/null +++ b/latex/html/classcore_1_1_t_l_s_session__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/latex/html/classcore_1_1_t_l_s_session__inherit__graph.md5 b/latex/html/classcore_1_1_t_l_s_session__inherit__graph.md5 new file mode 100644 index 0000000..96e99d8 --- /dev/null +++ b/latex/html/classcore_1_1_t_l_s_session__inherit__graph.md5 @@ -0,0 +1 @@ +14c5b8d8d1e10771ff7c5ce76d3123aa \ No newline at end of file diff --git a/latex/html/classcore_1_1_t_l_s_session__inherit__graph.png b/latex/html/classcore_1_1_t_l_s_session__inherit__graph.png new file mode 100644 index 0000000..ee044f4 Binary files /dev/null and b/latex/html/classcore_1_1_t_l_s_session__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_terminal_session-members.html b/latex/html/classcore_1_1_terminal_session-members.html new file mode 100644 index 0000000..9d8fd31 --- /dev/null +++ b/latex/html/classcore_1_1_terminal_session-members.html @@ -0,0 +1,132 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::TerminalSession Member List
          +
          +
          + +

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

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          active (defined in core::Socket)core::Socket
          bufferSize (defined in core::Socket)core::Socket
          clear()core::TerminalSession
          clearEOL()core::TerminalSession
          connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
          ePoll (defined in core::Socket)core::Socketprotected
          eventReceived(struct epoll_event event, pid_t threadId)core::Socket
          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
          onConnected(std::stringstream &out)core::TCPSessionprotectedvirtual
          onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
          onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
          onRegister() overridecore::TCPSessionprotectedvirtual
          onRegistered() (defined in core::Socket)core::Socketvirtual
          onUnregister()core::Socketvirtual
          output(std::stringstream &data)core::TCPSessionvirtual
          PreviousLine(int lines) (defined in core::TerminalSession)core::TerminalSession
          protocol(std::stringstream &out, std::string data)core::TCPSessionprotectedvirtual
          receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
          restoreCursor() (defined in core::TerminalSession)core::TerminalSession
          saveCursor() (defined in core::TerminalSession)core::TerminalSession
          scrollArea(int start, int end) (defined in core::TerminalSession)core::TerminalSession
          send(std::string data)core::TCPSession
          sendToAll(std::string data)core::TCPSession
          sendToAll(SessionFilter filter, std::string data)core::TCPSession
          server (defined in core::TCPSession)core::TCPSession
          setBackColor(int color) (defined in core::TerminalSession)core::TerminalSession
          setBufferSize(int length) (defined in core::Socket)core::Socketprotected
          setColor(int color) (defined in core::TerminalSession)core::TerminalSession
          setCursorLocation(int x, int y)core::TerminalSession
          setDescriptor(int descriptor)core::Socket
          shutDown (defined in core::Socket)core::Socketprotected
          shutdown(std::string text="unknown")core::Socket
          Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
          Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
          tag (defined in core::Object)core::Object
          TCPSession(EPoll &ePoll, TCPServer &server) (defined in core::TCPSession)core::TCPSession
          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
          write(std::string data)core::Socket
          write(char *buffer, int length) (defined in core::Socket)core::Socket
          ~Socket() (defined in core::Socket)core::Socket
          ~TCPSession() (defined in core::TCPSession)core::TCPSession
          ~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
          ~TerminalSession() (defined in core::TerminalSession)core::TerminalSession
          + + + + diff --git a/latex/html/classcore_1_1_terminal_session.html b/latex/html/classcore_1_1_terminal_session.html new file mode 100644 index 0000000..c1c8245 --- /dev/null +++ b/latex/html/classcore_1_1_terminal_session.html @@ -0,0 +1,333 @@ + + + + + + + +My Project: core::TerminalSession Class Reference + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          + +
          +
          core::TerminalSession Class Reference
          +
          +
          +
          +Inheritance diagram for core::TerminalSession:
          +
          +
          Inheritance graph
          + + + + + + + +
          [legend]
          +
          +Collaboration diagram for core::TerminalSession:
          +
          +
          Collaboration graph
          + + + + + + + + + + + + +
          [legend]
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          +Public Member Functions

          TerminalSession (EPoll &ePoll, TCPServer &server)
           
          +int getLines ()
           
          void clear ()
           
          void clearEOL ()
           
          void setCursorLocation (int x, int y)
           
          +void setColor (int color)
           
          +void setBackColor (int color)
           
          +void saveCursor ()
           
          +void restoreCursor ()
           
          +void NextLine (int lines)
           
          +void PreviousLine (int lines)
           
          +void scrollArea (int start, int end)
           
          - Public Member Functions inherited from core::TCPSession
          TCPSession (EPoll &ePoll, TCPServer &server)
           
          TCPSession (EPoll &ePoll, TCPServer &server, std::string text)
           
          virtual void output (std::stringstream &data)
           
          void send (std::string data)
           
          void sendToAll (std::string data)
           
          void sendToAll (SessionFilter filter, std::string data)
           
          - Public Member Functions inherited from core::TCPSocket
          TCPSocket (EPoll &ePoll)
           
          TCPSocket (EPoll &ePoll, std::string text)
           
          +void connect (IPAddress &address)
           
          - Public Member Functions inherited from core::Socket
          Socket (EPoll &ePoll)
           
          Socket (EPoll &ePoll, std::string text)
           
          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, pid_t threadId)
           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 onRegistered ()
           
          virtual void onUnregister ()
           Called when the socket has finished unregistering for the epoll processing. More...
           
          +bool needsToWrite ()
           
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          +Additional Inherited Members

          - Public Attributes inherited from core::TCPSession
          +Commandgrab = NULL
           
          +TCPServerserver
           
          - Public Attributes inherited from core::TCPSocket
          +IPAddress ipAddress
           
          - Public Attributes inherited from core::Socket
          +class {
          bufferSize
           
          +bool active = false
           
          - Public Attributes inherited from core::Object
          +std::string name
           
          +std::string tag
           
          - Protected Member Functions inherited from core::TCPSession
          virtual void onDataReceived (std::string data) override
           Called when data is received from the socket. More...
           
          virtual void onRegister () override
           Called when the socket has finished registering with the epoll processing. More...
           
          virtual void onConnected (std::stringstream &out)
           
          virtual void protocol (std::stringstream &out, std::string data)
           
          - Protected Member Functions inherited from core::Socket
          +void setBufferSize (int length)
           
          +virtual void onDataReceived (char *buffer, int len)
           
          virtual void receiveData (char *buffer, int bufferLength)
           
          - Protected Attributes inherited from core::Socket
          +EPollePoll
           
          +bool shutDown = false
           
          +

          Member Function Documentation

          + +

          ◆ clear()

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

          Clear the display.

          + +
          +
          + +

          ◆ clearEOL()

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

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

          + +
          +
          + +

          ◆ setCursorLocation()

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

          Set the location of the cursor on the display.

          + +
          +
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/TerminalSession.h
          • +
          • /home/bradarant/barant/ServerCore/TerminalSession.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_terminal_session__coll__graph.map b/latex/html/classcore_1_1_terminal_session__coll__graph.map new file mode 100644 index 0000000..e916d30 --- /dev/null +++ b/latex/html/classcore_1_1_terminal_session__coll__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/latex/html/classcore_1_1_terminal_session__coll__graph.md5 b/latex/html/classcore_1_1_terminal_session__coll__graph.md5 new file mode 100644 index 0000000..e531347 --- /dev/null +++ b/latex/html/classcore_1_1_terminal_session__coll__graph.md5 @@ -0,0 +1 @@ +765d0fe3be708adff5446ffe67837e00 \ No newline at end of file diff --git a/latex/html/classcore_1_1_terminal_session__coll__graph.png b/latex/html/classcore_1_1_terminal_session__coll__graph.png new file mode 100644 index 0000000..589d013 Binary files /dev/null and b/latex/html/classcore_1_1_terminal_session__coll__graph.png differ diff --git a/latex/html/classcore_1_1_terminal_session__inherit__graph.map b/latex/html/classcore_1_1_terminal_session__inherit__graph.map new file mode 100644 index 0000000..8225307 --- /dev/null +++ b/latex/html/classcore_1_1_terminal_session__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/latex/html/classcore_1_1_terminal_session__inherit__graph.md5 b/latex/html/classcore_1_1_terminal_session__inherit__graph.md5 new file mode 100644 index 0000000..ca12540 --- /dev/null +++ b/latex/html/classcore_1_1_terminal_session__inherit__graph.md5 @@ -0,0 +1 @@ +664c5de11cdaec9f5400ca06f09f28c8 \ No newline at end of file diff --git a/latex/html/classcore_1_1_terminal_session__inherit__graph.png b/latex/html/classcore_1_1_terminal_session__inherit__graph.png new file mode 100644 index 0000000..0becd79 Binary files /dev/null and b/latex/html/classcore_1_1_terminal_session__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_thread-members.html b/latex/html/classcore_1_1_thread-members.html new file mode 100644 index 0000000..cab9510 --- /dev/null +++ b/latex/html/classcore_1_1_thread-members.html @@ -0,0 +1,90 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::Thread Member List
          +
          +
          + +

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

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

          #include <Thread.h>

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

          +Public Member Functions

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

          +Additional Inherited Members

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

          Detailed Description

          +

          Thread

          +

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

          +

          Member Function Documentation

          + +

          ◆ start()

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

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

          + +
          +
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/Thread.h
          • +
          • /home/bradarant/barant/ServerCore/Thread.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_thread__coll__graph.map b/latex/html/classcore_1_1_thread__coll__graph.map new file mode 100644 index 0000000..5347857 --- /dev/null +++ b/latex/html/classcore_1_1_thread__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/latex/html/classcore_1_1_thread__coll__graph.md5 b/latex/html/classcore_1_1_thread__coll__graph.md5 new file mode 100644 index 0000000..9c70a86 --- /dev/null +++ b/latex/html/classcore_1_1_thread__coll__graph.md5 @@ -0,0 +1 @@ +7f313cc00294ba573a468abe1e0a23a6 \ No newline at end of file diff --git a/latex/html/classcore_1_1_thread__coll__graph.png b/latex/html/classcore_1_1_thread__coll__graph.png new file mode 100644 index 0000000..c39d419 Binary files /dev/null and b/latex/html/classcore_1_1_thread__coll__graph.png differ diff --git a/latex/html/classcore_1_1_thread__inherit__graph.map b/latex/html/classcore_1_1_thread__inherit__graph.map new file mode 100644 index 0000000..5347857 --- /dev/null +++ b/latex/html/classcore_1_1_thread__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/latex/html/classcore_1_1_thread__inherit__graph.md5 b/latex/html/classcore_1_1_thread__inherit__graph.md5 new file mode 100644 index 0000000..4719022 --- /dev/null +++ b/latex/html/classcore_1_1_thread__inherit__graph.md5 @@ -0,0 +1 @@ +8ca33a2ec98fc4a19debba20b3f86be1 \ No newline at end of file diff --git a/latex/html/classcore_1_1_thread__inherit__graph.png b/latex/html/classcore_1_1_thread__inherit__graph.png new file mode 100644 index 0000000..c39d419 Binary files /dev/null and b/latex/html/classcore_1_1_thread__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_timer-members.html b/latex/html/classcore_1_1_timer-members.html new file mode 100644 index 0000000..b087492 --- /dev/null +++ b/latex/html/classcore_1_1_timer-members.html @@ -0,0 +1,111 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::Timer Member List
          +
          +
          + +

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

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

          #include <Timer.h>

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

          +Public Member Functions

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

          +Protected Member Functions

          virtual void onTimeout ()=0
           
          +

          Detailed Description

          +

          Timer

          +

          Set and trigger callback upon specified timeout.

          +

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

          +

          Member Function Documentation

          + +

          ◆ clearTimer()

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

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

          + +
          +
          + +

          ◆ getElapsed()

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

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

          + +
          +
          + +

          ◆ onTimeout()

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

          This method is called when the time out occurs.

          + +
          +
          + +

          ◆ setTimer()

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

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

          +
          Parameters
          + + +
          delaythe amount of time in seconds to wait before trigering the onTimeout function.
          +
          +
          + +
          +
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/Timer.h
          • +
          • /home/bradarant/barant/ServerCore/Timer.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_timer__coll__graph.map b/latex/html/classcore_1_1_timer__coll__graph.map new file mode 100644 index 0000000..103761a --- /dev/null +++ b/latex/html/classcore_1_1_timer__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/latex/html/classcore_1_1_timer__coll__graph.md5 b/latex/html/classcore_1_1_timer__coll__graph.md5 new file mode 100644 index 0000000..ea94904 --- /dev/null +++ b/latex/html/classcore_1_1_timer__coll__graph.md5 @@ -0,0 +1 @@ +25351ab6293ce14eb485a8115496ab00 \ No newline at end of file diff --git a/latex/html/classcore_1_1_timer__coll__graph.png b/latex/html/classcore_1_1_timer__coll__graph.png new file mode 100644 index 0000000..1703037 Binary files /dev/null and b/latex/html/classcore_1_1_timer__coll__graph.png differ diff --git a/latex/html/classcore_1_1_timer__inherit__graph.map b/latex/html/classcore_1_1_timer__inherit__graph.map new file mode 100644 index 0000000..78f5727 --- /dev/null +++ b/latex/html/classcore_1_1_timer__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/latex/html/classcore_1_1_timer__inherit__graph.md5 b/latex/html/classcore_1_1_timer__inherit__graph.md5 new file mode 100644 index 0000000..46bfd3f --- /dev/null +++ b/latex/html/classcore_1_1_timer__inherit__graph.md5 @@ -0,0 +1 @@ +bbd11aceb37d8d4b72aa8493ea9f424c \ No newline at end of file diff --git a/latex/html/classcore_1_1_timer__inherit__graph.png b/latex/html/classcore_1_1_timer__inherit__graph.png new file mode 100644 index 0000000..76b6c38 Binary files /dev/null and b/latex/html/classcore_1_1_timer__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_u_d_p_server_socket-members.html b/latex/html/classcore_1_1_u_d_p_server_socket-members.html new file mode 100644 index 0000000..2856c1e --- /dev/null +++ b/latex/html/classcore_1_1_u_d_p_server_socket-members.html @@ -0,0 +1,116 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::UDPServerSocket Member List
          +
          +
          + +

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

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

          #include <UDPServerSocket.h>

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

          +Public Member Functions

          UDPServerSocket (EPoll &ePoll, std::string url, short int port, std::string commandName)
           
          - Public Member Functions inherited from core::UDPSocket
          UDPSocket (EPoll &ePoll)
           
          - Public Member Functions inherited from core::Socket
          Socket (EPoll &ePoll)
           
          Socket (EPoll &ePoll, std::string text)
           
          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, pid_t threadId)
           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 when the socket has finished registering with the epoll processing. More...
           
          +virtual void onRegistered ()
           
          virtual void onUnregister ()
           Called when the socket has finished unregistering for the epoll processing. More...
           
          +bool needsToWrite ()
           
          - Public Member Functions inherited from core::Command
          virtual bool check (std::string request)
           
          virtual int processCommand (std::string request, TCPSession *session, std::stringstream &data)
           
          virtual void output (Session *session)
           
          void setName (std::string name)
           
          +std::string getName ()
           
          + + + + + + + + + + + + + +

          +Protected Member Functions

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

          +Protected Attributes

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

          +Additional Inherited Members

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

          Detailed Description

          +

          UDPSocket

          +

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

          +

          Member Function Documentation

          + +

          ◆ onDataReceived()

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

          Called when data is received from the socket.

          +

          The onConnected method is called when the socket is ready to communicate. Writing to the socket can begin on this call to initiate a contact with the remote device. The onDataReceived method is called when the socket has received an event from epoll and there is data ready to be read from the socket. The default handler will pull the data and put it into the streambuf for the socket. EPOLLIN

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

          Reimplemented from core::Socket.

          + +
          +
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/UDPServerSocket.h
          • +
          • /home/bradarant/barant/ServerCore/UDPServerSocket.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_u_d_p_server_socket__coll__graph.map b/latex/html/classcore_1_1_u_d_p_server_socket__coll__graph.map new file mode 100644 index 0000000..d73eac6 --- /dev/null +++ b/latex/html/classcore_1_1_u_d_p_server_socket__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/latex/html/classcore_1_1_u_d_p_server_socket__coll__graph.md5 b/latex/html/classcore_1_1_u_d_p_server_socket__coll__graph.md5 new file mode 100644 index 0000000..0f1f281 --- /dev/null +++ b/latex/html/classcore_1_1_u_d_p_server_socket__coll__graph.md5 @@ -0,0 +1 @@ +f841fca576e546ca1befaa0a75522469 \ No newline at end of file diff --git a/latex/html/classcore_1_1_u_d_p_server_socket__coll__graph.png b/latex/html/classcore_1_1_u_d_p_server_socket__coll__graph.png new file mode 100644 index 0000000..c3406fd Binary files /dev/null and b/latex/html/classcore_1_1_u_d_p_server_socket__coll__graph.png differ diff --git a/latex/html/classcore_1_1_u_d_p_server_socket__inherit__graph.map b/latex/html/classcore_1_1_u_d_p_server_socket__inherit__graph.map new file mode 100644 index 0000000..002fefc --- /dev/null +++ b/latex/html/classcore_1_1_u_d_p_server_socket__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/latex/html/classcore_1_1_u_d_p_server_socket__inherit__graph.md5 b/latex/html/classcore_1_1_u_d_p_server_socket__inherit__graph.md5 new file mode 100644 index 0000000..d6aa382 --- /dev/null +++ b/latex/html/classcore_1_1_u_d_p_server_socket__inherit__graph.md5 @@ -0,0 +1 @@ +772582ca4fe9e81770c0436d273d5404 \ No newline at end of file diff --git a/latex/html/classcore_1_1_u_d_p_server_socket__inherit__graph.png b/latex/html/classcore_1_1_u_d_p_server_socket__inherit__graph.png new file mode 100644 index 0000000..698c647 Binary files /dev/null and b/latex/html/classcore_1_1_u_d_p_server_socket__inherit__graph.png differ diff --git a/latex/html/classcore_1_1_u_d_p_socket-members.html b/latex/html/classcore_1_1_u_d_p_socket-members.html new file mode 100644 index 0000000..15d4134 --- /dev/null +++ b/latex/html/classcore_1_1_u_d_p_socket-members.html @@ -0,0 +1,106 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          +
          +
          core::UDPSocket Member List
          +
          +
          + +

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

          + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          active (defined in core::Socket)core::Socket
          bufferSize (defined in core::Socket)core::Socket
          ePoll (defined in core::Socket)core::Socketprotected
          eventReceived(struct epoll_event event, pid_t threadId)core::Socket
          getDescriptor()core::Socket
          name (defined in core::Object)core::Object
          needsToWrite() (defined in core::Socket)core::Socket
          onDataReceived(std::string data)core::Socketprotectedvirtual
          onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
          onRegister()core::Socketvirtual
          onRegistered() (defined in core::Socket)core::Socketvirtual
          onUnregister()core::Socketvirtual
          output(std::stringstream &out) (defined in core::Socket)core::Socket
          receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
          setBufferSize(int length) (defined in core::Socket)core::Socketprotected
          setDescriptor(int descriptor)core::Socket
          shutdown(std::string text="unknown")core::Socket
          shutDown (defined in core::Socket)core::Socketprotected
          Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
          Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
          tag (defined in core::Object)core::Object
          UDPSocket(EPoll &ePoll) (defined in core::UDPSocket)core::UDPSocket
          write(std::string data)core::Socket
          write(char *buffer, int length) (defined in core::Socket)core::Socket
          ~Socket() (defined in core::Socket)core::Socket
          ~UDPSocket() (defined in core::UDPSocket)core::UDPSocket
          + + + + diff --git a/latex/html/classcore_1_1_u_d_p_socket.html b/latex/html/classcore_1_1_u_d_p_socket.html new file mode 100644 index 0000000..745850f --- /dev/null +++ b/latex/html/classcore_1_1_u_d_p_socket.html @@ -0,0 +1,188 @@ + + + + + + + +My Project: core::UDPSocket Class Reference + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + + +
          +
          + + +
          + +
          + + +
          +
          + +
          +
          core::UDPSocket Class Reference
          +
          +
          +
          +Inheritance diagram for core::UDPSocket:
          +
          +
          Inheritance graph
          + + + + + +
          [legend]
          +
          +Collaboration diagram for core::UDPSocket:
          +
          +
          Collaboration graph
          + + + + + + +
          [legend]
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          +Public Member Functions

          UDPSocket (EPoll &ePoll)
           
          - Public Member Functions inherited from core::Socket
          Socket (EPoll &ePoll)
           
          Socket (EPoll &ePoll, std::string text)
           
          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, pid_t threadId)
           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 when the socket has finished registering with the epoll processing. More...
           
          +virtual void onRegistered ()
           
          virtual void onUnregister ()
           Called when the socket has finished unregistering for the epoll processing. More...
           
          +bool needsToWrite ()
           
          + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          +Additional Inherited Members

          - Public Attributes inherited from core::Socket
          +class {
          bufferSize
           
          +bool active = false
           
          - Public Attributes inherited from core::Object
          +std::string name
           
          +std::string tag
           
          - Protected Member Functions inherited from core::Socket
          +void setBufferSize (int length)
           
          virtual void onDataReceived (std::string data)
           Called when data is received from the socket. More...
           
          +virtual void onDataReceived (char *buffer, int len)
           
          virtual void receiveData (char *buffer, int bufferLength)
           
          - Protected Attributes inherited from core::Socket
          +EPollePoll
           
          +bool shutDown = false
           
          +
          The documentation for this class was generated from the following files:
            +
          • /home/bradarant/barant/ServerCore/UDPSocket.h
          • +
          • /home/bradarant/barant/ServerCore/UDPSocket.cpp
          • +
          +
          + + + + diff --git a/latex/html/classcore_1_1_u_d_p_socket__coll__graph.map b/latex/html/classcore_1_1_u_d_p_socket__coll__graph.map new file mode 100644 index 0000000..1eedfc9 --- /dev/null +++ b/latex/html/classcore_1_1_u_d_p_socket__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/latex/html/classcore_1_1_u_d_p_socket__coll__graph.md5 b/latex/html/classcore_1_1_u_d_p_socket__coll__graph.md5 new file mode 100644 index 0000000..96d5911 --- /dev/null +++ b/latex/html/classcore_1_1_u_d_p_socket__coll__graph.md5 @@ -0,0 +1 @@ +a4a9aace467dc0cbe9ca9bd5039cc0e4 \ No newline at end of file diff --git a/latex/html/classcore_1_1_u_d_p_socket__coll__graph.png b/latex/html/classcore_1_1_u_d_p_socket__coll__graph.png new file mode 100644 index 0000000..b2de0d7 Binary files /dev/null and b/latex/html/classcore_1_1_u_d_p_socket__coll__graph.png differ diff --git a/latex/html/classcore_1_1_u_d_p_socket__inherit__graph.map b/latex/html/classcore_1_1_u_d_p_socket__inherit__graph.map new file mode 100644 index 0000000..543a6a3 --- /dev/null +++ b/latex/html/classcore_1_1_u_d_p_socket__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/latex/html/classcore_1_1_u_d_p_socket__inherit__graph.md5 b/latex/html/classcore_1_1_u_d_p_socket__inherit__graph.md5 new file mode 100644 index 0000000..11d2fe2 --- /dev/null +++ b/latex/html/classcore_1_1_u_d_p_socket__inherit__graph.md5 @@ -0,0 +1 @@ +b9736acdac75b0cdac91739e6d39e356 \ No newline at end of file diff --git a/latex/html/classcore_1_1_u_d_p_socket__inherit__graph.png b/latex/html/classcore_1_1_u_d_p_socket__inherit__graph.png new file mode 100644 index 0000000..0251c69 Binary files /dev/null and b/latex/html/classcore_1_1_u_d_p_socket__inherit__graph.png differ diff --git a/latex/html/classes.html b/latex/html/classes.html new file mode 100644 index 0000000..b85ea45 --- /dev/null +++ b/latex/html/classes.html @@ -0,0 +1,94 @@ + + + + + + + +My Project: Class Index + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          Class Index
          +
          +
          +
          c | e | i | o | s | t | u
          + + + + + + + + + + + +
            c  
          +
            i  
          +
            s  
          +
          TCPSession (core)   
            u  
          +
          TCPSocket (core)   
          Command (core)   INotify (core)   SessionFilter (core)   TerminalSession (core)   UDPServerSocket (core)   
          CommandList (core)   IPAddress (core)   Socket (core)   Thread (core)   UDPSocket (core)   
          ConsoleServer (core)   IPAddressList (core)   
            t  
          +
          Timer (core)   
          ConsoleSession (core)   
            o  
          +
          TLSServer (core)   
            e  
          +
          TCPServer (core)   TLSSession (core)   
          Object (core)   
          EPoll (core)   
          +
          c | e | i | o | s | t | u
          +
          + + + + diff --git a/latex/html/closed.png b/latex/html/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/latex/html/closed.png differ diff --git a/latex/html/doc.png b/latex/html/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/latex/html/doc.png differ diff --git a/latex/html/doxygen.css b/latex/html/doxygen.css new file mode 100644 index 0000000..4f1ab91 --- /dev/null +++ b/latex/html/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.13 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/latex/html/doxygen.png b/latex/html/doxygen.png new file mode 100644 index 0000000..3ff17d8 Binary files /dev/null and b/latex/html/doxygen.png differ diff --git a/latex/html/dynsections.js b/latex/html/dynsections.js new file mode 100644 index 0000000..85e1836 --- /dev/null +++ b/latex/html/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +My Project: File List + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          File List
          +
          +
          +
          Here is a list of all documented files with brief descriptions:
          + + + + + + + + + + + + + + + + + + + + + + +
           Command.h
           CommandList.h
           ConsoleServer.h
           ConsoleSession.h
           EPoll.h
           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/latex/html/folderclosed.png b/latex/html/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/latex/html/folderclosed.png differ diff --git a/latex/html/folderopen.png b/latex/html/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/latex/html/folderopen.png differ diff --git a/latex/html/functions.html b/latex/html/functions.html new file mode 100644 index 0000000..e5abd6c --- /dev/null +++ b/latex/html/functions.html @@ -0,0 +1,293 @@ + + + + + + + +My Project: Class Members + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          Here is a list of all documented class members with links to the class documentation for each member:
          + +

          - a -

          + + +

          - b -

          + + +

          - c -

          + + +

          - e -

          + + +

          - g -

          + + +

          - i -

          + + +

          - m -

          + + +

          - o -

          + + +

          - p -

          + + +

          - r -

          + + +

          - s -

          + + +

          - t -

          + + +

          - u -

          + + +

          - w -

          + + +

          - ~ -

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

          - a -

          + + +

          - c -

          + + +

          - e -

          + + +

          - g -

          + + +

          - i -

          + + +

          - o -

          + + +

          - p -

          + + +

          - r -

          + + +

          - s -

          + + +

          - t -

          + + +

          - u -

          + + +

          - w -

          + + +

          - ~ -

          +
          + + + + diff --git a/latex/html/functions_vars.html b/latex/html/functions_vars.html new file mode 100644 index 0000000..290b044 --- /dev/null +++ b/latex/html/functions_vars.html @@ -0,0 +1,87 @@ + + + + + + + +My Project: Class Members - Variables + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          + + + + diff --git a/latex/html/graph_legend.html b/latex/html/graph_legend.html new file mode 100644 index 0000000..1625d6c --- /dev/null +++ b/latex/html/graph_legend.html @@ -0,0 +1,102 @@ + + + + + + + +My Project: Graph Legend + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          Graph Legend
          +
          +
          +

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

          +

          Consider the following example:

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

          This will result in the following graph:

          +
          + +
          +

          The boxes in the above graph have the following meaning:

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

          The arrows have the following meaning:

          +
            +
          • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
          • +
          • +A dark green arrow is used for protected inheritance.
          • +
          • +A dark red arrow is used for private inheritance.
          • +
          • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
          • +
          • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
          • +
          +
          + + + + diff --git a/latex/html/graph_legend.md5 b/latex/html/graph_legend.md5 new file mode 100644 index 0000000..a06ed05 --- /dev/null +++ b/latex/html/graph_legend.md5 @@ -0,0 +1 @@ +387ff8eb65306fa251338d3c9bd7bfff \ No newline at end of file diff --git a/latex/html/graph_legend.png b/latex/html/graph_legend.png new file mode 100644 index 0000000..5ee31ee Binary files /dev/null and b/latex/html/graph_legend.png differ diff --git a/latex/html/hierarchy.html b/latex/html/hierarchy.html new file mode 100644 index 0000000..6bef1e9 --- /dev/null +++ b/latex/html/hierarchy.html @@ -0,0 +1,104 @@ + + + + + + + +My Project: Class Hierarchy + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          Class Hierarchy
          +
          + + + + + diff --git a/latex/html/index.html b/latex/html/index.html new file mode 100644 index 0000000..04e75a5 --- /dev/null +++ b/latex/html/index.html @@ -0,0 +1,73 @@ + + + + + + + +My Project: Main Page + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          My Project Documentation
          +
          +
          +
          + + + + diff --git a/latex/html/inherit_graph_0.map b/latex/html/inherit_graph_0.map new file mode 100644 index 0000000..c50ca5d --- /dev/null +++ b/latex/html/inherit_graph_0.map @@ -0,0 +1,3 @@ + + + diff --git a/latex/html/inherit_graph_0.md5 b/latex/html/inherit_graph_0.md5 new file mode 100644 index 0000000..bcf5e5c --- /dev/null +++ b/latex/html/inherit_graph_0.md5 @@ -0,0 +1 @@ +51746708fc61da0c1cc4d63c4317826f \ No newline at end of file diff --git a/latex/html/inherit_graph_0.png b/latex/html/inherit_graph_0.png new file mode 100644 index 0000000..670d0af Binary files /dev/null and b/latex/html/inherit_graph_0.png differ diff --git a/latex/html/inherit_graph_1.map b/latex/html/inherit_graph_1.map new file mode 100644 index 0000000..98b5452 --- /dev/null +++ b/latex/html/inherit_graph_1.map @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/latex/html/inherit_graph_1.md5 b/latex/html/inherit_graph_1.md5 new file mode 100644 index 0000000..537597a --- /dev/null +++ b/latex/html/inherit_graph_1.md5 @@ -0,0 +1 @@ +48a5b3011b4cf39de35c7f43ca62b52c \ No newline at end of file diff --git a/latex/html/inherit_graph_1.png b/latex/html/inherit_graph_1.png new file mode 100644 index 0000000..5332036 Binary files /dev/null and b/latex/html/inherit_graph_1.png differ diff --git a/latex/html/inherits.html b/latex/html/inherits.html new file mode 100644 index 0000000..6ae4705 --- /dev/null +++ b/latex/html/inherits.html @@ -0,0 +1,106 @@ + + + + + + + +My Project: Class Hierarchy + + + + + + + + + +
          +
          + + + + + + +
          +
          My Project +
          +
          +
          + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          +
          Class Hierarchy
          +
          +
          + + + +
          + + + +
          + + + + + + + + + + + + + + + + + + + + + + +
          +
          + + + + diff --git a/latex/html/jquery.js b/latex/html/jquery.js new file mode 100644 index 0000000..f5343ed --- /dev/null +++ b/latex/html/jquery.js @@ -0,0 +1,87 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
          a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
          ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
          t
          ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
          ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

          ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
          ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
          ","
          "],thead:[1,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],col:[2,"","
          "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
          ","
          "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
          ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
          ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
          ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('