Major changes to socket scheduling in EPoll.
							
								
								
									
										14
									
								
								Command.cpp
									
									
									
									
									
								
							
							
						
						| @ -1,4 +1,5 @@ | ||||
| #include "Command.h" | ||||
| #include "Log.h" | ||||
| 
 | ||||
| namespace core { | ||||
|     | ||||
| @ -7,14 +8,11 @@ namespace core { | ||||
|    void Command::output(Session *session) {} | ||||
|     | ||||
|    bool Command::check(std::string request) { | ||||
|       if(request != "") { | ||||
|          if(name.length() > 0) {  | ||||
|             size_t start = request.find_first_not_of(" "); | ||||
|             if(name == request.substr(start, name.length())) | ||||
|               return true; | ||||
|          } | ||||
|          return false; | ||||
|       } | ||||
|       if(request.size() > 0) | ||||
| 	if(request == name)  | ||||
| 	  if(name.length() > 0) | ||||
| 	    return true; | ||||
|       return false; | ||||
|    } | ||||
|     | ||||
|    void Command::setName(std::string name) { | ||||
|  | ||||
| @ -4,6 +4,7 @@ | ||||
| #include "includes" | ||||
| #include "Object.h" | ||||
| #include "TCPSession.h" | ||||
| #include "PString.h" | ||||
| 
 | ||||
| namespace core { | ||||
|     | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| #include "CommandList.h"\ | ||||
| #include "CommandList.h" | ||||
| #include "Log.h" | ||||
| 
 | ||||
| namespace core { | ||||
|        | ||||
| @ -8,23 +9,41 @@ namespace core { | ||||
|    } | ||||
|     | ||||
|    void CommandList::remove(Command &command) { | ||||
|        | ||||
|       | ||||
|    } | ||||
|     | ||||
|    bool CommandList::processRequest(std::string request, TCPSession *session, std::stringstream &data) {    | ||||
|       for(auto *command : commands) { | ||||
|          if(command->check(request)) { | ||||
|             command->processCommand(request, session, data); | ||||
|             return true; | ||||
|          } | ||||
|       }   | ||||
|       return false; | ||||
|       std::stringstream input = std::stringstream(request); | ||||
|       while(!input.eof()) { | ||||
| 	 std::string requests; | ||||
| 	 std::getline(input, requests); | ||||
| 	 if(session->grab != NULL) | ||||
| 	   session->grab->processCommand(requests, session, data); | ||||
| 	 else { | ||||
| 	    int pos = requests.find(" "); | ||||
| 	    std::string function = pos == requests.npos ? requests: requests.substr(0, pos); | ||||
| 	    for(auto *command : commands)  | ||||
| 	      if(command->check(function))  | ||||
| 		command->processCommand(requests, session, data);	     | ||||
| 	 } | ||||
|       }          | ||||
|       return true; | ||||
|    } | ||||
|     | ||||
|    bool CommandList::grabInput(TCPSession *session, Command &command) { | ||||
|       session->grab = &command; | ||||
|    } | ||||
| 
 | ||||
|    void CommandList::clearGrab(TCPSession *session) { | ||||
|       session->grab = NULL; | ||||
|    } | ||||
|        | ||||
|    int CommandList::processCommand(std::string request, TCPSession *session, std::stringstream &data) { | ||||
|       for(Command *command : commands)  | ||||
|          data << command->getName() << std::endl; | ||||
|    } | ||||
| 
 | ||||
|     | ||||
|     | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -25,13 +25,47 @@ namespace core { | ||||
|        | ||||
|       void add(Command &command, std::string name = ""); | ||||
|        | ||||
|       ///
 | ||||
|       /// Remove a command object from the command list.
 | ||||
|       ///
 | ||||
|        | ||||
|       void remove(Command &command); | ||||
|        | ||||
|       ///
 | ||||
|       /// 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.
 | ||||
|       ///
 | ||||
|        | ||||
|       bool processRequest(std::string request, TCPSession *session, std::stringstream &data); | ||||
| 
 | ||||
|       ///
 | ||||
|       /// 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.
 | ||||
|       ///
 | ||||
|        | ||||
|       bool grabInput(TCPSession *session, Command &command); | ||||
| 
 | ||||
|       ///
 | ||||
|       ///
 | ||||
|       ///
 | ||||
|        | ||||
|       void clearGrab(TCPSession *session); | ||||
|        | ||||
|       ///
 | ||||
|       ///
 | ||||
|       ///
 | ||||
|        | ||||
|       int processCommand(std::string request, TCPSession *session, std::stringstream &data); | ||||
|        | ||||
|     protected: | ||||
|        | ||||
|       ///
 | ||||
|       /// The vector of all registered commands.
 | ||||
|       ///
 | ||||
|        | ||||
|       std::vector<Command *> commands; | ||||
|        | ||||
|    }; | ||||
|  | ||||
| @ -9,7 +9,7 @@ namespace core { | ||||
|     | ||||
|    ConsoleSession::~ConsoleSession() {} | ||||
|        | ||||
|    void ConsoleSession::protocol(std::string data = "") { | ||||
|    void ConsoleSession::protocol(std::stringstream &out, std::string data = "") { | ||||
|        | ||||
|       switch (status) { | ||||
| 	  | ||||
| @ -23,25 +23,23 @@ namespace core { | ||||
|          setCursorLocation(2, 1); | ||||
|          setBackColor(BG_BLACK);          | ||||
|          status = LOGIN; | ||||
|          protocol(); | ||||
|          protocol(out); | ||||
|          break; | ||||
|           | ||||
|        case LOGIN: | ||||
|          setCursorLocation(3, 3); | ||||
|          out << "Enter User Profile: "; | ||||
|          send(); | ||||
|          status = WAIT_USER_PROFILE; | ||||
|          break; | ||||
| 	  | ||||
|        case WAIT_USER_PROFILE: | ||||
|          status = PASSWORD; | ||||
|          protocol(); | ||||
|          protocol(out); | ||||
|          break; | ||||
| 	  | ||||
|        case PASSWORD: | ||||
|          setCursorLocation(4, 7); | ||||
|          out << "Enter Password: "; | ||||
|          send(); | ||||
|          status = WAIT_PASSWORD; | ||||
|          break; | ||||
|           | ||||
| @ -56,14 +54,13 @@ namespace core { | ||||
|          setBackColor(BG_BLACK);          | ||||
|          scrollArea(2, 16); | ||||
|          status = PROMPT; | ||||
|          protocol(); | ||||
|          protocol(out); | ||||
|          break; | ||||
| 	  | ||||
|        case PROMPT: | ||||
|          setCursorLocation(17, 1); | ||||
|          clearEOL(); | ||||
|          out << ("--> "); | ||||
|          send(); | ||||
|          status = INPUT; | ||||
|          break; | ||||
| 	  | ||||
| @ -71,13 +68,13 @@ namespace core { | ||||
|          command = std::string(data); | ||||
|          command.erase(command.find_last_not_of("\r\n\t") + 1); | ||||
|          status = PROCESS; | ||||
|          protocol(); | ||||
|          protocol(out); | ||||
|          break; | ||||
| 	  | ||||
|        case PROCESS: | ||||
|          doCommand(command); | ||||
|          status = (command == "exit")? DONE: PROMPT;  | ||||
|          protocol(); | ||||
|          protocol(out); | ||||
|          break;    | ||||
| 	  | ||||
|        case DONE: | ||||
| @ -93,18 +90,18 @@ namespace core { | ||||
|    void ConsoleSession::writeLog(std::string data) { | ||||
|       saveCursor(); | ||||
|       setCursorLocation(16, 1); | ||||
|       out << data; | ||||
|       restoreCursor(); | ||||
|       send(); | ||||
|       send(data); | ||||
|    } | ||||
|     | ||||
|    void ConsoleSession::doCommand(std::string request) {       | ||||
| 	    saveCursor(); | ||||
| 	    setCursorLocation(16, 1); | ||||
| 	    out << "--> " << request << std::endl; | ||||
| 	    server.commands.processRequest(request, this, out); | ||||
| 	    restoreCursor(); | ||||
| 	    send();		 | ||||
| 	}   | ||||
|       saveCursor(); | ||||
|       setCursorLocation(16, 1); | ||||
|       std::stringstream out; | ||||
|       out << "--> " << request << std::endl; | ||||
|       server.commands.processRequest(request, this, out); | ||||
|       restoreCursor(); | ||||
|       send(out.str());		 | ||||
|    }   | ||||
|           | ||||
| } | ||||
|  | ||||
| @ -24,7 +24,7 @@ namespace core { | ||||
|       void writeLog(std::string data); | ||||
| 
 | ||||
|     protected: | ||||
|       void protocol(std::string data) override;  | ||||
|       void protocol(std::stringstream &out, std::string data) override;  | ||||
|     | ||||
|     private: | ||||
|       enum Status {WELCOME, LOGIN, WAIT_USER_PROFILE, PASSWORD, WAIT_PASSWORD, PROMPT, INPUT, PROCESS, DONE}; | ||||
|  | ||||
							
								
								
									
										61
									
								
								EPoll.cpp
									
									
									
									
									
								
							
							
						
						| @ -69,20 +69,23 @@ namespace core { | ||||
|    } | ||||
|     | ||||
|    bool EPoll::registerSocket(Socket *socket) { | ||||
|       lock.lock(); | ||||
|       coreutils::Log(coreutils::LOG_DEBUG_2) << "0001-" << socket->getDescriptor(); | ||||
|       std::map<int, Socket *>::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<int, Socket *>(socket->getDescriptor(), socket)); | ||||
|       lock.unlock(); | ||||
|       socket->enable(true); | ||||
|       coreutils::Log(coreutils::LOG_DEBUG_2) << "0004-" << socket->getDescriptor(); | ||||
|       enableSocket(socket); | ||||
|       coreutils::Log(coreutils::LOG_DEBUG_2) << "0005-" << socket->getDescriptor(); | ||||
|       return true; | ||||
|    } | ||||
|     | ||||
|    bool EPoll::unregisterSocket(Socket *socket /**< The Socket to unregister. */) { | ||||
|       lock.lock(); | ||||
|       socket->enable(false); | ||||
|       disableSocket(socket); | ||||
|       coreutils::Log(coreutils::LOG_DEBUG_3) << "Unregistering socket " << socket->getDescriptor() << "."; | ||||
|       std::map<int, Socket *>::iterator temp = sockets.find(socket->getDescriptor()); | ||||
|       if(temp == sockets.end())  | ||||
| @ -93,15 +96,16 @@ namespace core { | ||||
|    } | ||||
|     | ||||
|    void EPoll::eventReceived(struct epoll_event event) { | ||||
|       lock.lock(); | ||||
|       std::map<int, Socket *>::iterator socket = sockets.find(event.data.fd); | ||||
|       lock.unlock(); | ||||
|       if(socket != sockets.end()) { | ||||
|          (socket->second)->eventReceived(event); | ||||
|       } else { | ||||
|          coreutils::Log(coreutils::LOG_WARN) << "System problem. Reference to socket " << event.data.fd << " that has no object.";                               | ||||
|          throw coreutils::Exception("System problem occurred."); | ||||
|       } | ||||
|       if(socket != sockets.end()) {	    | ||||
| 	 if(socket->second->eventReceived(event)) {	       | ||||
| 	    coreutils::Log(coreutils::LOG_DEBUG_4) << "resetSocket from eventReceived.";	    | ||||
| 	    resetSocket(socket->second);	  | ||||
| 	 }	  | ||||
|       }	  | ||||
|       else | ||||
| 	throw coreutils::Exception("Reference to socket that has no object."); | ||||
|        | ||||
|    } | ||||
|     | ||||
|    int EPoll::getDescriptor() { | ||||
| @ -114,8 +118,37 @@ namespace core { | ||||
|          data << "|" << ++sequence; | ||||
|          threadx.output(data);  | ||||
|          data << "|" << std::endl; | ||||
|       } | ||||
|        | ||||
|       }       | ||||
|    } | ||||
|     | ||||
|    void EPoll::enableSocket(Socket *socket) { | ||||
|       struct epoll_event event; | ||||
|       event.data.fd = socket->getDescriptor(); | ||||
|       event.events = EPOLLIN | EPOLLONESHOT | EPOLLRDHUP | EPOLLET; | ||||
|       if(socket->needsToWrite()) | ||||
| 	event.events |= EPOLLWRNORM; | ||||
|       epoll_ctl(epfd, EPOLL_CTL_ADD, event.data.fd, &event); | ||||
|       socket->active = true; | ||||
|       coreutils::Log(coreutils::LOG_DEBUG_4) << "Enabling socket " << socket->getDescriptor() << " for events."; | ||||
|    } | ||||
|     | ||||
|    void EPoll::disableSocket(Socket *socket) { | ||||
|       epoll_ctl(epfd, EPOLL_CTL_DEL, socket->getDescriptor(), NULL); | ||||
|       socket->active = false; | ||||
|       coreutils::Log(coreutils::LOG_DEBUG_4) << "Disabling socket " << socket->getDescriptor() << " from events."; | ||||
|    } | ||||
|     | ||||
|    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(); | ||||
|       event.events = EPOLLIN | EPOLLONESHOT | EPOLLRDHUP | EPOLLET; | ||||
|       if(socket->needsToWrite()) | ||||
| 	event.events |= EPOLLWRNORM; | ||||
|       epoll_ctl(epfd, EPOLL_CTL_MOD, event.data.fd, &event); | ||||
|       coreutils::Log(coreutils::LOG_DEBUG_4) << "Resetting socket " << socket->getDescriptor() << " for events."; | ||||
|    } | ||||
|           | ||||
| } | ||||
|  | ||||
							
								
								
									
										10
									
								
								EPoll.h
									
									
									
									
									
								
							
							
						
						| @ -39,7 +39,7 @@ namespace core { | ||||
|       EPoll(); | ||||
|        | ||||
|       ///
 | ||||
|       /// The destructor for the BMAEPoll object.
 | ||||
|      /// The destructor for the BMAEPoll object.
 | ||||
|       ///
 | ||||
|        | ||||
|       ~EPoll(); | ||||
| @ -111,7 +111,9 @@ namespace core { | ||||
|       ///
 | ||||
|        | ||||
|       int processCommand(std::string command, TCPSession *session, std::stringstream &data) override; ///<Output the threads array to the console.
 | ||||
|        | ||||
| 
 | ||||
|       void resetSocket(Socket *socket); | ||||
| 
 | ||||
|     private: | ||||
|        | ||||
|       int epfd; | ||||
| @ -120,7 +122,9 @@ namespace core { | ||||
|       std::vector<Thread> threads;  | ||||
|       volatile bool terminateThreads;  | ||||
|       std::mutex lock; | ||||
|        | ||||
|       void enableSocket(Socket *socket); | ||||
|       void disableSocket(Socket *socket); | ||||
|              | ||||
|    }; | ||||
|     | ||||
| } | ||||
|  | ||||
							
								
								
									
										58
									
								
								INotify.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,58 @@ | ||||
| #include "INotify.h" | ||||
| #include "Log.h" | ||||
| 
 | ||||
| namespace core { | ||||
|     | ||||
|    INotify::INotify(EPoll &ePoll) : Socket(ePoll, "INotify") { | ||||
|       setDescriptor(inotify_init());       | ||||
|    }   | ||||
|     | ||||
|    INotify::~INotify() { | ||||
|       shutdown(); | ||||
|    } | ||||
|     | ||||
|    int INotify::addWatch(std::string watch) { | ||||
|       return inotify_add_watch(getDescriptor(), watch.c_str(), IN_ALL_EVENTS); | ||||
|    } | ||||
| 
 | ||||
|    void INotify::removeWatch(int wd) { | ||||
|       inotify_rm_watch(getDescriptor(), wd); | ||||
|    } | ||||
| 
 | ||||
|    void INotify::onDataReceived(char *buffer, int len) { | ||||
|       const struct inotify_event *event; | ||||
|       char *ptr; | ||||
|       for (ptr = buffer; ptr < buffer + len; | ||||
| 	   ptr += sizeof(struct inotify_event) + event->len) { | ||||
| 	 event = (const struct inotify_event *) ptr; | ||||
| 	  | ||||
| 	 if(event->mask & IN_ACCESS)  | ||||
| 	   inAccess(std::string(event->name)); | ||||
| 	 if(event->mask & IN_ATTRIB)  | ||||
| 	   inAttrib(std::string(event->name)); | ||||
| 	 if(event->mask & IN_CLOSE_WRITE)  | ||||
| 	   inCloseWrite(std::string(event->name)); | ||||
| 	 if(event->mask & IN_CLOSE_NOWRITE)  | ||||
| 	   inCloseNoWrite(std::string(event->name)); | ||||
| 	 if(event->mask & IN_CREATE)  | ||||
| 	   inCreate(std::string(event->name)); | ||||
| 	 if(event->mask & IN_DELETE)  | ||||
| 	   inDelete(std::string(event->name)); | ||||
| 	 if(event->mask & IN_DELETE_SELF)  | ||||
| 	   inDeleteSelf(std::string(event->name)); | ||||
| 	 if(event->mask & IN_MODIFY)  | ||||
| 	   inModify(std::string(event->name)); | ||||
| 	 if(event->mask & IN_MOVE_SELF)  | ||||
| 	   inMoveSelf(std::string(event->name)); | ||||
| 	 if(event->mask & IN_MOVED_FROM)  | ||||
| 	   inMovedFrom(std::string(event->name)); | ||||
| 	 if(event->mask & IN_MOVED_TO)  | ||||
| 	   inMovedTo(std::string(event->name)); | ||||
| 	 if(event->mask & IN_OPEN)  | ||||
| 	   inOpen(std::string(event->name)); | ||||
| 	  | ||||
|       }       | ||||
|    } | ||||
| 	 | ||||
|     | ||||
| } | ||||
							
								
								
									
										37
									
								
								INotify.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,37 @@ | ||||
| #ifndef __INotify_h__ | ||||
| # define __INotify_h__ | ||||
| 
 | ||||
| #include "includes" | ||||
| #include "Socket.h" | ||||
| 
 | ||||
| namespace core { | ||||
|     | ||||
|    class INotify : Socket { | ||||
|        | ||||
|     public: | ||||
|       INotify(EPoll &ePoll); | ||||
|       ~INotify(); | ||||
|        | ||||
|       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) {}  | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| @ -1,49 +0,0 @@ | ||||
| #ifndef __ParseString_h__ | ||||
| #define __ParseString_h__ | ||||
| 
 | ||||
| #include "includes" | ||||
| 
 | ||||
| namespace core { | ||||
| 
 | ||||
| 	class ParseString : std::string { | ||||
| 
 | ||||
| 	 public: | ||||
| 		ParseString() {} | ||||
| 		ParseString(std::string value) : std::string(value) {} | ||||
| 		ParseString(std::string value, char delimiter) : std::string(value) { | ||||
| 			 | ||||
| 		} | ||||
| 	 | ||||
| 		void setDelimiter(char delimiter) { | ||||
| 			this->delimiter = delimiter; | ||||
| 			parse(); | ||||
| 		} | ||||
| 	 | ||||
| 	private: | ||||
| 		char delimiter; | ||||
| 		 | ||||
| 		void parse() { | ||||
| 			 | ||||
| 			std::stringstream sstring((std::string)*this); | ||||
| 			 | ||||
| 			sstring.imbue(std::locale(sstring.getloc(), new isDelimiter(':'))); | ||||
| 			 | ||||
| 			 | ||||
| 		} | ||||
| 
 | ||||
| 		struct isDelimiter : std::ctype<char> { | ||||
| 			char chr; | ||||
| 			isDelimiter(char chr) : std::ctype<char>(get_table()) { | ||||
| 				this->chr = chr; | ||||
| 			} | ||||
| 			static mask const* get_table() { | ||||
| 				static mask rc[table_size]; | ||||
| 				rc[*chr] = std::ctype_base::space; | ||||
| 				rc['\n'] = std::ctype_base::space; | ||||
| 				return &rc[0]; | ||||
| 			} | ||||
| 		}; | ||||
| 	 | ||||
| 	}; | ||||
| 
 | ||||
| #endif | ||||
| @ -1 +0,0 @@ | ||||
| 
 | ||||
| @ -1,18 +0,0 @@ | ||||
| Release/Command.cpp.o: Command.cpp Command.h includes Object.h Session.h \ | ||||
|  TCPSocket.h Socket.h IPAddress.h SessionFilter.h | ||||
| 
 | ||||
| Command.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| @ -1,21 +0,0 @@ | ||||
| Release/CommandList.cpp.o: CommandList.cpp CommandList.h Session.h \ | ||||
|  TCPSocket.h includes Socket.h Object.h IPAddress.h SessionFilter.h \ | ||||
|  Command.h | ||||
| 
 | ||||
| CommandList.h: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| Command.h: | ||||
| @ -1,40 +0,0 @@ | ||||
| Release/ConsoleServer.cpp.o: ConsoleServer.cpp ConsoleServer.h includes \ | ||||
|  TCPServerSocket.h Socket.h Object.h TCPSocket.h IPAddress.h Service.h \ | ||||
|  CommandList.h Session.h SessionFilter.h Command.h EPoll.h Log.h File.h \ | ||||
|  Thread.h ConsoleSession.h TerminalSession.h | ||||
| 
 | ||||
| ConsoleServer.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| TCPServerSocket.h: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| Service.h: | ||||
| 
 | ||||
| CommandList.h: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| Command.h: | ||||
| 
 | ||||
| EPoll.h: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| File.h: | ||||
| 
 | ||||
| Thread.h: | ||||
| 
 | ||||
| ConsoleSession.h: | ||||
| 
 | ||||
| TerminalSession.h: | ||||
| @ -1,34 +0,0 @@ | ||||
| Release/ConsoleSession.cpp.o: ConsoleSession.cpp ConsoleSession.h \ | ||||
|  TerminalSession.h includes Session.h TCPSocket.h Socket.h Object.h \ | ||||
|  IPAddress.h SessionFilter.h TCPServerSocket.h Service.h CommandList.h \ | ||||
|  Command.h Log.h File.h | ||||
| 
 | ||||
| ConsoleSession.h: | ||||
| 
 | ||||
| TerminalSession.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| TCPServerSocket.h: | ||||
| 
 | ||||
| Service.h: | ||||
| 
 | ||||
| CommandList.h: | ||||
| 
 | ||||
| Command.h: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| File.h: | ||||
| @ -1,29 +0,0 @@ | ||||
| Release/EPoll.cpp.o: EPoll.cpp Thread.h includes Log.h File.h Object.h \ | ||||
|  Session.h TCPSocket.h Socket.h IPAddress.h SessionFilter.h EPoll.h \ | ||||
|  Command.h Exception.h | ||||
| 
 | ||||
| Thread.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| File.h: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| EPoll.h: | ||||
| 
 | ||||
| Command.h: | ||||
| 
 | ||||
| Exception.h: | ||||
| @ -1,12 +0,0 @@ | ||||
| Release/Exception.cpp.o: Exception.cpp Exception.h includes Log.h File.h \ | ||||
|  Object.h | ||||
| 
 | ||||
| Exception.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| File.h: | ||||
| 
 | ||||
| Object.h: | ||||
| @ -1,7 +0,0 @@ | ||||
| Release/File.cpp.o: File.cpp File.h includes Exception.h | ||||
| 
 | ||||
| File.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Exception.h: | ||||
| @ -1,11 +0,0 @@ | ||||
| Release/Header.cpp.o: Header.cpp Header.h includes Object.h Log.h File.h | ||||
| 
 | ||||
| Header.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| File.h: | ||||
| @ -1,7 +0,0 @@ | ||||
| Release/IPAddress.cpp.o: IPAddress.cpp IPAddress.h includes Object.h | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Object.h: | ||||
| @ -1,40 +0,0 @@ | ||||
| Release/Log.cpp.o: Log.cpp ConsoleSession.h TerminalSession.h includes \ | ||||
|  Session.h TCPSocket.h Socket.h Object.h IPAddress.h SessionFilter.h \ | ||||
|  TCPServerSocket.h Service.h CommandList.h Command.h Log.h File.h \ | ||||
|  ConsoleServer.h EPoll.h Thread.h | ||||
| 
 | ||||
| ConsoleSession.h: | ||||
| 
 | ||||
| TerminalSession.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| TCPServerSocket.h: | ||||
| 
 | ||||
| Service.h: | ||||
| 
 | ||||
| CommandList.h: | ||||
| 
 | ||||
| Command.h: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| File.h: | ||||
| 
 | ||||
| ConsoleServer.h: | ||||
| 
 | ||||
| EPoll.h: | ||||
| 
 | ||||
| Thread.h: | ||||
| @ -1,12 +0,0 @@ | ||||
| Release/Response.cpp.o: Response.cpp Response.h includes Object.h Log.h \ | ||||
|  File.h | ||||
| 
 | ||||
| Response.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| File.h: | ||||
| @ -1,27 +0,0 @@ | ||||
| Release/Service.cpp.o: Service.cpp Service.h Object.h includes \ | ||||
|  CommandList.h Session.h TCPSocket.h Socket.h IPAddress.h SessionFilter.h \ | ||||
|  Command.h TCPServerSocket.h Exception.h | ||||
| 
 | ||||
| Service.h: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| CommandList.h: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| Command.h: | ||||
| 
 | ||||
| TCPServerSocket.h: | ||||
| 
 | ||||
| Exception.h: | ||||
| @ -1,27 +0,0 @@ | ||||
| Release/Session.cpp.o: Session.cpp Session.h TCPSocket.h includes \ | ||||
|  Socket.h Object.h IPAddress.h SessionFilter.h Log.h File.h Service.h \ | ||||
|  CommandList.h Command.h | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| File.h: | ||||
| 
 | ||||
| Service.h: | ||||
| 
 | ||||
| CommandList.h: | ||||
| 
 | ||||
| Command.h: | ||||
| @ -1,29 +0,0 @@ | ||||
| Release/Socket.cpp.o: Socket.cpp EPoll.h Log.h includes File.h Object.h \ | ||||
|  Socket.h Thread.h Session.h TCPSocket.h IPAddress.h SessionFilter.h \ | ||||
|  Command.h Exception.h | ||||
| 
 | ||||
| EPoll.h: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| File.h: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| Thread.h: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| Command.h: | ||||
| 
 | ||||
| Exception.h: | ||||
| @ -1,36 +0,0 @@ | ||||
| Release/TCPServerSocket.cpp.o: TCPServerSocket.cpp TCPServerSocket.h \ | ||||
|  Socket.h includes Object.h TCPSocket.h IPAddress.h Service.h \ | ||||
|  CommandList.h Session.h SessionFilter.h Command.h EPoll.h Log.h File.h \ | ||||
|  Thread.h Exception.h | ||||
| 
 | ||||
| TCPServerSocket.h: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| Service.h: | ||||
| 
 | ||||
| CommandList.h: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| Command.h: | ||||
| 
 | ||||
| EPoll.h: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| File.h: | ||||
| 
 | ||||
| Thread.h: | ||||
| 
 | ||||
| Exception.h: | ||||
| @ -1,29 +0,0 @@ | ||||
| Release/TCPSocket.cpp.o: TCPSocket.cpp TCPSocket.h includes Socket.h \ | ||||
|  Object.h IPAddress.h EPoll.h Log.h File.h Thread.h Session.h \ | ||||
|  SessionFilter.h Command.h Exception.h | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| EPoll.h: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| File.h: | ||||
| 
 | ||||
| Thread.h: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| Command.h: | ||||
| 
 | ||||
| Exception.h: | ||||
| @ -1,42 +0,0 @@ | ||||
| Release/TLSServerSocket.cpp.o: TLSServerSocket.cpp TLSServerSocket.h \ | ||||
|  Socket.h includes Object.h TCPServerSocket.h TCPSocket.h IPAddress.h \ | ||||
|  Service.h CommandList.h Session.h SessionFilter.h Command.h TLSSession.h \ | ||||
|  TLSService.h EPoll.h Log.h File.h Thread.h Exception.h | ||||
| 
 | ||||
| TLSServerSocket.h: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| TCPServerSocket.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| Service.h: | ||||
| 
 | ||||
| CommandList.h: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| Command.h: | ||||
| 
 | ||||
| TLSSession.h: | ||||
| 
 | ||||
| TLSService.h: | ||||
| 
 | ||||
| EPoll.h: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| File.h: | ||||
| 
 | ||||
| Thread.h: | ||||
| 
 | ||||
| Exception.h: | ||||
| @ -1,42 +0,0 @@ | ||||
| Release/TLSSession.cpp.o: TLSSession.cpp TLSSession.h includes Session.h \ | ||||
|  TCPSocket.h Socket.h Object.h IPAddress.h SessionFilter.h \ | ||||
|  TLSServerSocket.h TCPServerSocket.h Service.h CommandList.h Command.h \ | ||||
|  TLSService.h EPoll.h Log.h File.h Thread.h Exception.h | ||||
| 
 | ||||
| TLSSession.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| TLSServerSocket.h: | ||||
| 
 | ||||
| TCPServerSocket.h: | ||||
| 
 | ||||
| Service.h: | ||||
| 
 | ||||
| CommandList.h: | ||||
| 
 | ||||
| Command.h: | ||||
| 
 | ||||
| TLSService.h: | ||||
| 
 | ||||
| EPoll.h: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| File.h: | ||||
| 
 | ||||
| Thread.h: | ||||
| 
 | ||||
| Exception.h: | ||||
| @ -1,27 +0,0 @@ | ||||
| Release/TerminalSession.cpp.o: TerminalSession.cpp TerminalSession.h \ | ||||
|  includes Session.h TCPSocket.h Socket.h Object.h IPAddress.h \ | ||||
|  SessionFilter.h TCPServerSocket.h Service.h CommandList.h Command.h | ||||
| 
 | ||||
| TerminalSession.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| TCPServerSocket.h: | ||||
| 
 | ||||
| Service.h: | ||||
| 
 | ||||
| CommandList.h: | ||||
| 
 | ||||
| Command.h: | ||||
| @ -1,27 +0,0 @@ | ||||
| Release/Thread.cpp.o: Thread.cpp Thread.h includes Log.h File.h Object.h \ | ||||
|  Session.h TCPSocket.h Socket.h IPAddress.h SessionFilter.h EPoll.h \ | ||||
|  Command.h | ||||
| 
 | ||||
| Thread.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| File.h: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| EPoll.h: | ||||
| 
 | ||||
| Command.h: | ||||
| @ -1,29 +0,0 @@ | ||||
| Release/Timer.cpp.o: Timer.cpp Timer.h Socket.h includes Object.h EPoll.h \ | ||||
|  Log.h File.h Thread.h Session.h TCPSocket.h IPAddress.h SessionFilter.h \ | ||||
|  Command.h | ||||
| 
 | ||||
| Timer.h: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| EPoll.h: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| File.h: | ||||
| 
 | ||||
| Thread.h: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| Command.h: | ||||
| @ -1,31 +0,0 @@ | ||||
| Release/UDPServerSocket.cpp.o: UDPServerSocket.cpp UDPServerSocket.h \ | ||||
|  Socket.h includes Object.h UDPSocket.h Session.h TCPSocket.h IPAddress.h \ | ||||
|  SessionFilter.h Command.h EPoll.h Log.h File.h Thread.h | ||||
| 
 | ||||
| UDPServerSocket.h: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| UDPSocket.h: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
| 
 | ||||
| Command.h: | ||||
| 
 | ||||
| EPoll.h: | ||||
| 
 | ||||
| Log.h: | ||||
| 
 | ||||
| File.h: | ||||
| 
 | ||||
| Thread.h: | ||||
| @ -1,18 +0,0 @@ | ||||
| Release/UDPSocket.cpp.o: UDPSocket.cpp UDPSocket.h Socket.h includes \ | ||||
|  Object.h Session.h TCPSocket.h IPAddress.h SessionFilter.h | ||||
| 
 | ||||
| UDPSocket.h: | ||||
| 
 | ||||
| Socket.h: | ||||
| 
 | ||||
| includes: | ||||
| 
 | ||||
| Object.h: | ||||
| 
 | ||||
| Session.h: | ||||
| 
 | ||||
| TCPSocket.h: | ||||
| 
 | ||||
| IPAddress.h: | ||||
| 
 | ||||
| SessionFilter.h: | ||||
							
								
								
									
										155
									
								
								Socket.cpp
									
									
									
									
									
								
							
							
						
						| @ -10,15 +10,29 @@ namespace core { | ||||
|       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); | ||||
|       length = 4096; | ||||
|    } | ||||
|     | ||||
|    Socket::~Socket() { | ||||
|       ePoll.unregisterSocket(this); | ||||
|       close(descriptor); | ||||
|       free(buffer); | ||||
|       if(descriptor == -1) | ||||
| 	return;            | ||||
|       onUnregister(); | ||||
|       ePoll.unregisterSocket(this); | ||||
|       coreutils::Log(coreutils::LOG_DEBUG_3) << "Socket destroyed for socket " << descriptor << "."; | ||||
|       close(descriptor); | ||||
|    } | ||||
|     | ||||
|    void Socket::setDescriptor(int descriptor) { | ||||
|       if((descriptor == -1) && (errno == 24)) { | ||||
| 	 shutdown("Too many files open"); | ||||
| 	 coreutils::Exception("Too many files open. Refusing connection.");; | ||||
|       } | ||||
|       socketLock.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__); | ||||
| @ -26,6 +40,7 @@ namespace core { | ||||
|       onRegister(); | ||||
|       ePoll.registerSocket(this); | ||||
|       onRegistered(); | ||||
|       socketLock.unlock(); | ||||
|    } | ||||
|     | ||||
|    int Socket::getDescriptor() { | ||||
| @ -43,43 +58,48 @@ namespace core { | ||||
|     | ||||
|    void Socket::onUnregister() {} | ||||
|     | ||||
|    void Socket::eventReceived(struct epoll_event event) { | ||||
|                 | ||||
|    bool Socket::eventReceived(struct epoll_event event) { | ||||
| 
 | ||||
|       coreutils::Log(coreutils::LOG_DEBUG_1) << "eventReceived on " << descriptor << "; shutDown = " << shutDown << "; active = " << active << ";"; | ||||
| 	    | ||||
|       socketLock.lock(); | ||||
|        | ||||
|       if(event.events & EPOLLRDHUP) { | ||||
| 	 coreutils::Log(coreutils::LOG_DEBUG_1) << "start EPOLLRDHUP " << descriptor; | ||||
|          readHangup = true; | ||||
|          enable(false); | ||||
|          shutdown(); | ||||
|          return; | ||||
|          shutdown("hangup received"); | ||||
|          return false; | ||||
|       } | ||||
| 
 | ||||
|       if(event.events & EPOLLIN)  | ||||
|         receiveData(buffer, length);                   | ||||
|              | ||||
|       if(event.events & EPOLLOUT)  | ||||
|         writeSocket(); | ||||
|       if(event.events & EPOLLIN) { | ||||
| 	 coreutils::Log(coreutils::LOG_DEBUG_1) << "start EPOLLIN " << descriptor;	    | ||||
| 	 receiveData(buffer, length);                   | ||||
|       } | ||||
|        | ||||
|       if(event.events & EPOLLWRNORM) { | ||||
| 	 coreutils::Log(coreutils::LOG_DEBUG_1) << "start EPOLLOUT " << descriptor;	    | ||||
| 	 writeSocket(); | ||||
|       } | ||||
| 
 | ||||
|       if(event.events & EPOLLHUP) { | ||||
| 	 coreutils::Log(coreutils::LOG_DEBUG_1) << "start EPOLLHUP " << descriptor; | ||||
| 	 coreutils::Log(coreutils::LOG_DEBUG_1) << "end shutting down" << descriptor; | ||||
|          shutdown(); | ||||
|          return; | ||||
| 	 return false; | ||||
|       } | ||||
|           | ||||
|       enable(true); | ||||
| 
 | ||||
|       coreutils::Log(coreutils::LOG_DEBUG_1) << "end with active = " << active << " on socket " << descriptor; | ||||
|       socketLock.unlock(); | ||||
| 
 | ||||
|       return active; | ||||
|    } | ||||
|     | ||||
|    void Socket::enable(bool mode) { | ||||
|       if(mode) { | ||||
|          if(fifo.empty()) { | ||||
|             if(!readHangup) { | ||||
|                active ? resetRead(): setRead(); | ||||
|             } | ||||
|          } | ||||
|          else { | ||||
|             active ? resetReadWrite(): setReadWrite(); | ||||
|          } | ||||
|          active = true; | ||||
|       } | ||||
|       else  | ||||
|         clear(); | ||||
|    void Socket::onDataReceived(std::string data) { | ||||
|       throw coreutils::Exception("Need to override onDataReceived.", __FILE__, __LINE__, -1); | ||||
|    } | ||||
|        | ||||
|    void Socket::onDataReceived(char *buffer, int len) { | ||||
|       onDataReceived(std::string(buffer, len));                    | ||||
|    } | ||||
|     | ||||
|    void Socket::receiveData(char *buffer, int bufferLength) { | ||||
| @ -91,7 +111,7 @@ namespace core { | ||||
|       int error = -1; | ||||
|        | ||||
|       if((len = ::read(getDescriptor(), buffer, bufferLength)) >= 0)  | ||||
|         onDataReceived(std::string(buffer, len));        | ||||
|         onDataReceived(buffer, len);        | ||||
|       else { | ||||
| 	  | ||||
| 	 error = errno; | ||||
| @ -114,78 +134,47 @@ namespace core { | ||||
|       } | ||||
|    } | ||||
|     | ||||
| //   void Socket::onConnected() {
 | ||||
| //   }
 | ||||
|     | ||||
|    void Socket::writeSocket() { | ||||
|       if(shutDown)  | ||||
| 	return; | ||||
|        | ||||
|       lock.lock(); | ||||
|       if(fifo.size() > 0) { | ||||
|          ::write(descriptor, fifo.front().c_str(), fifo.front().length()); | ||||
|          fifo.pop(); | ||||
|          enable(true); | ||||
| 	 coreutils::Log(coreutils::LOG_DEBUG_4) << "reseSocket from writeSocket."; | ||||
| 	 if(active) | ||||
| 	   ePoll.resetSocket(this); | ||||
|       } | ||||
|       lock.unlock(); | ||||
|    } | ||||
|     | ||||
|    void Socket::write(std::string data) { | ||||
|    int Socket::write(std::string data) { | ||||
|       if(!active)  | ||||
| 	return -1; | ||||
| 	 | ||||
|       lock.lock(); | ||||
|       fifo.emplace(data);    | ||||
|       enable(true); | ||||
|       coreutils::Log(coreutils::LOG_DEBUG_4) << "resetSocket from write. active is " << active; | ||||
|       if(active) | ||||
| 	ePoll.resetSocket(this); | ||||
|       lock.unlock(); | ||||
|       return 1; | ||||
|    } | ||||
|     | ||||
|    void Socket::output(std::stringstream &out) { | ||||
|       out << "|" << descriptor << "|"; | ||||
|    } | ||||
| 
 | ||||
|    bool Socket::needsToWrite() { | ||||
|       return fifo.size() > 0; | ||||
|    }    | ||||
|     | ||||
|    void Socket::setRead() { | ||||
|       event.data.fd = descriptor; | ||||
|       event.events = EPOLLIN | EPOLLONESHOT | EPOLLRDHUP | EPOLLET;    | ||||
|       epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_DEL, descriptor, NULL);   | ||||
|       epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_ADD, event.data.fd, &event);       | ||||
|    } | ||||
|     | ||||
|    void Socket::setWrite() { | ||||
|       event.data.fd = descriptor; | ||||
|       event.events = EPOLLOUT | EPOLLONESHOT | EPOLLRDHUP | EPOLLET;    | ||||
|       epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_DEL, descriptor, NULL);   | ||||
|       epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_ADD, descriptor, &event);       | ||||
|    } | ||||
|     | ||||
|    void Socket::setReadWrite() { | ||||
|       event.data.fd = descriptor; | ||||
|       event.events = EPOLLIN | EPOLLWRNORM | EPOLLONESHOT | EPOLLRDHUP | EPOLLET;    | ||||
|       epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_DEL, descriptor, NULL);   | ||||
|       epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_ADD, descriptor, &event);       | ||||
|    } | ||||
|     | ||||
|    void Socket::resetRead() { | ||||
|       event.data.fd = descriptor; | ||||
|       event.events = EPOLLIN | EPOLLONESHOT | EPOLLRDHUP | EPOLLET;    | ||||
|       epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_MOD, descriptor, &event);       | ||||
|    } | ||||
|     | ||||
|    void Socket::resetWrite() { | ||||
|       event.data.fd = descriptor; | ||||
|       event.events = EPOLLOUT | EPOLLONESHOT | EPOLLRDHUP | EPOLLET; | ||||
|       epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_MOD, descriptor, &event);       | ||||
|    } | ||||
|     | ||||
|    void Socket::resetReadWrite() { | ||||
|       event.data.fd = descriptor; | ||||
|       event.events = EPOLLIN | EPOLLOUT | EPOLLONESHOT | EPOLLRDHUP | EPOLLET; | ||||
|       epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_MOD, descriptor, &event);       | ||||
|    } | ||||
|     | ||||
|    void Socket::clear() { | ||||
|       epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_DEL, descriptor, NULL); | ||||
|    } | ||||
|     | ||||
|    void Socket::shutdown() { | ||||
|       coreutils::Log(coreutils::LOG_DEBUG_2) << "Shutdown requested on socket " << descriptor << "."; | ||||
|    void Socket::shutdown(std::string text) { | ||||
|       coreutils::Log(coreutils::LOG_DEBUG_2) << "Shutdown requested on socket " << descriptor << " with reason " << text << "."; | ||||
|       shutDown = true; | ||||
| 		enable(false); | ||||
| 		delete this; | ||||
|       active = false; | ||||
|       delete this; | ||||
|    } | ||||
|     | ||||
| } | ||||
|  | ||||
							
								
								
									
										45
									
								
								Socket.h
									
									
									
									
									
								
							
							
						
						| @ -34,15 +34,20 @@ namespace core { | ||||
|     public: | ||||
| 
 | ||||
|       Socket(EPoll &ePoll); | ||||
|       Socket(EPoll &ePoll, std::string text); | ||||
|       ~Socket(); | ||||
| 
 | ||||
|       ///
 | ||||
|       /// 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.
 | ||||
|       ///
 | ||||
| 
 | ||||
|       void shutdown(); | ||||
|       void shutdown(std::string text = "unknown"); | ||||
| 
 | ||||
|       ///
 | ||||
|       /// setDescriptor establishes the file descriptor for the socket and registers the socket
 | ||||
|       /// on the EPoll controller. setDescriptor will invoke the onRegister() event.
 | ||||
|       /// on the EPoll controller. setDescriptor will invoke the onRegister() event. 
 | ||||
|       ///
 | ||||
|        | ||||
|       void setDescriptor(int descriptor); ///<Set the descriptor for the socket.
 | ||||
| @ -68,13 +73,13 @@ namespace core { | ||||
|       /// simulated.
 | ||||
|       ///
 | ||||
|     | ||||
|       void eventReceived(struct epoll_event event); ///< Parse epoll event and call specified callbacks.
 | ||||
|       bool eventReceived(struct epoll_event event); ///< Parse epoll event and call specified callbacks.
 | ||||
| 
 | ||||
|       ///
 | ||||
|       /// Write data to the socket.
 | ||||
|       ///
 | ||||
|           | ||||
|       void write(std::string data); | ||||
|       int write(std::string data); | ||||
|       void write(char *buffer, int length); | ||||
| 
 | ||||
|       void output(std::stringstream &out); | ||||
| @ -98,7 +103,9 @@ namespace core { | ||||
| 
 | ||||
|       virtual void onUnregister(); ///< Called when the socket has finished unregistering for the epoll processing.
 | ||||
| 
 | ||||
|       void enable(bool mode); ///< Enable the socket to read or write based upon buffer.
 | ||||
|       bool needsToWrite(); | ||||
| 
 | ||||
|       bool active = false; | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| @ -130,8 +137,10 @@ namespace core { | ||||
|       /// @param data the data that has been received from the socket.
 | ||||
|       ///
 | ||||
|     | ||||
|       virtual void onDataReceived(std::string data) = 0; ///< Called when data is received from the socket.
 | ||||
|     | ||||
|       virtual void onDataReceived(std::string data); ///< Called when data is received from the socket.
 | ||||
| 
 | ||||
|       virtual void onDataReceived(char *buffer, int len);  | ||||
|        | ||||
|       ///
 | ||||
|       /// 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.
 | ||||
| @ -140,24 +149,14 @@ namespace core { | ||||
|       virtual void receiveData(char *buffer, int bufferLength); | ||||
|            | ||||
|     private: | ||||
|     | ||||
| 
 | ||||
|       std::string text; | ||||
|       int descriptor = -1; | ||||
|       std::mutex lock; | ||||
|       std::mutex socketLock; | ||||
|       bool readHangup = false; | ||||
| 
 | ||||
|       struct epoll_event event;  // Event selection construction structure.
 | ||||
| 
 | ||||
|       //--------------------------------------------------
 | ||||
|       // These are used to schedule the socket activity.
 | ||||
|       //--------------------------------------------------
 | ||||
| 
 | ||||
|       void setRead(); ///< Queue a request to read from this socket.
 | ||||
|       void setWrite(); ///< Queue a request to write to this socket.
 | ||||
|       void setReadWrite(); | ||||
|       void resetRead(); | ||||
|       void resetWrite();; | ||||
|       void resetReadWrite(); | ||||
|       void clear(); | ||||
| //      struct epoll_event event;  // Event selection construction structure.
 | ||||
| 
 | ||||
|       //-------------------------------------------------------------------------------------
 | ||||
|       // the writeSocket is called when epoll has received a write request for a socket. 
 | ||||
| @ -181,9 +180,7 @@ namespace core { | ||||
| //   const char * const current_;
 | ||||
| 
 | ||||
|       std::queue<std::string> fifo; | ||||
|     | ||||
|       bool active = false; | ||||
|     | ||||
|        | ||||
|    }; | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -6,17 +6,19 @@ | ||||
| 
 | ||||
| namespace core { | ||||
| 
 | ||||
|    TCPServer::TCPServer(EPoll &ePoll, IPAddress address) : TCPSocket(ePoll) {     | ||||
|    TCPServer::TCPServer(EPoll &ePoll, IPAddress address, std::string text)  | ||||
|      : TCPSocket(ePoll, text) {     | ||||
|       setDescriptor(socket(AF_INET, SOCK_STREAM, 0)); | ||||
|       int yes = 1; | ||||
|       setsockopt(getDescriptor(), SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)); | ||||
|       if(bind(getDescriptor(), address.getPointer(), address.addressLength) < 0)  | ||||
| 	throw coreutils::Exception("Error on bind to socket: " + std::to_string(errno)); | ||||
|       if(listen(getDescriptor(), 10) < 0)  | ||||
|       if(listen(getDescriptor(), 20) < 0)  | ||||
| 	throw coreutils::Exception("Error on listen to socket"); | ||||
|    } | ||||
|     | ||||
| 
 | ||||
|    TCPServer::~TCPServer() { | ||||
|       coreutils::Log(coreutils::LOG_DEBUG_2) << "Closing server socket " << getDescriptor() << ".";       | ||||
|       close(getDescriptor()); | ||||
|    } | ||||
|     | ||||
| @ -52,7 +54,7 @@ namespace core { | ||||
|           sessions.erase(cursor); | ||||
|    } | ||||
|     | ||||
|    void TCPServer::sessionErrorHandler(std::string errorString) {   	 | ||||
|    void TCPServer::sessionErrorHandler(std::string errorString, std::stringstream &out) {   	 | ||||
|       throw coreutils::Exception(errorString); | ||||
|    }    | ||||
|     | ||||
| @ -61,7 +63,9 @@ namespace core { | ||||
|    } | ||||
|     | ||||
|    void TCPServer::output(TCPSession *session) {       | ||||
|       session->out << "|" << session->ipAddress.getClientAddressAndPort();        | ||||
|       std::stringstream out; | ||||
|       out << "|" << session->ipAddress.getClientAddressAndPort();        | ||||
|       session->send(out.str()); | ||||
|    } | ||||
|     | ||||
|    int TCPServer::processCommand(std::string command, TCPSession *session, std::stringstream &data) {       | ||||
|  | ||||
| @ -35,7 +35,7 @@ namespace core { | ||||
|       /// @return the instance of the BMATCPServerSocket.
 | ||||
|       ///
 | ||||
|        | ||||
|       TCPServer(EPoll &ePoll, IPAddress address); | ||||
|       TCPServer(EPoll &ePoll, IPAddress address, std::string text = ""); | ||||
|        | ||||
|       ///
 | ||||
|       /// The destructor for this object.
 | ||||
| @ -50,6 +50,7 @@ namespace core { | ||||
|       ///
 | ||||
|        | ||||
|       IPAddressList *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 
 | ||||
| @ -60,7 +61,7 @@ namespace core { | ||||
| 
 | ||||
|       void removeFromSessionList(TCPSession *session); | ||||
| 
 | ||||
|       virtual void sessionErrorHandler(std::string errorString);       | ||||
|       virtual void sessionErrorHandler(std::string errorString, std::stringstream &out);       | ||||
|        | ||||
|       ///
 | ||||
|       /// getSocketAccept is designed to allow a polymorphic extension of this object to
 | ||||
|  | ||||
| @ -1,11 +1,14 @@ | ||||
| #include "TCPSession.h" | ||||
| #include "TCPServer.h" | ||||
| #include "Log.h" | ||||
| #include "PString.h" | ||||
| 
 | ||||
| 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() { | ||||
|       server.removeFromSessionList(this); | ||||
|    } | ||||
| @ -14,43 +17,45 @@ namespace core { | ||||
|       data << "|" << ipAddress.getClientAddressAndPort(); | ||||
|    } | ||||
|     | ||||
|    void TCPSession::protocol(std::string data = "") { | ||||
|    void TCPSession::protocol(std::stringstream &out, std::string data = "") { | ||||
|       if(data.length() > 0) { | ||||
|          if(!server.commands.processRequest(data, this, out))  | ||||
|            server.sessionErrorHandler("Invalid data received."); | ||||
|          send(); | ||||
|       } | ||||
|            server.sessionErrorHandler("Invalid data received.", out); | ||||
|       }  | ||||
|       else { | ||||
| 	 onConnected(out); | ||||
|       }       | ||||
|    } | ||||
|     | ||||
|    void TCPSession::onRegister() { | ||||
|       protocol(); | ||||
|       std::stringstream out; | ||||
|       protocol(out); | ||||
|       send(out.str()); | ||||
|    } | ||||
|     | ||||
| 
 | ||||
|    void TCPSession::onConnected(std::stringstream &out) {} | ||||
|        | ||||
|    void TCPSession::onDataReceived(std::string data) { | ||||
|       protocol(data); | ||||
|       std::stringstream out; | ||||
|       protocol(out, data); | ||||
|       send(out.str()); | ||||
|    } | ||||
|     | ||||
|    void TCPSession::sendToAll() { | ||||
|       for(auto session : server.sessions) {  | ||||
|          if(session != this) | ||||
|             session->write(out.str()); | ||||
|          } | ||||
|       out.str(""); | ||||
|    void TCPSession::sendToAll(std::string data) { | ||||
|       for(auto session : server.sessions)  | ||||
| 	if(session != this) | ||||
| 	  session->write(data);       | ||||
|    } | ||||
|     | ||||
|    void TCPSession::sendToAll(SessionFilter filter) { | ||||
|       for(auto session : server.sessions) {  | ||||
|          if(filter.test(*session)) { | ||||
|             if(session != this) | ||||
|               session->write(out.str()); | ||||
|          } | ||||
|       } | ||||
|       out.str(""); | ||||
|    void TCPSession::sendToAll(SessionFilter filter, std::string data) { | ||||
|       for(auto session : server.sessions)  | ||||
| 	if(filter.test(*session))  | ||||
| 	  if(session != this) | ||||
| 	    session->write(data); | ||||
|    } | ||||
|     | ||||
|    void TCPSession::send() { | ||||
|       write(out.str()); | ||||
|       out.str(""); | ||||
|    void TCPSession::send(std::string data) { | ||||
|       write(data); | ||||
|    } | ||||
|     | ||||
| } | ||||
|  | ||||
							
								
								
									
										29
									
								
								TCPSession.h
									
									
									
									
									
								
							
							
						
						| @ -5,7 +5,9 @@ | ||||
| #include "SessionFilter.h" | ||||
| 
 | ||||
| namespace core { | ||||
|    | ||||
| 
 | ||||
|    class Command; | ||||
|     | ||||
|    class TCPServer; | ||||
|     | ||||
|    ///
 | ||||
| @ -22,8 +24,11 @@ namespace core { | ||||
|        | ||||
|     public: | ||||
|       TCPSession(EPoll &ePoll, TCPServer &server); | ||||
|       TCPSession(EPoll &ePoll, TCPServer &server, std::string text); | ||||
|       ~TCPSession();  | ||||
|        | ||||
|       Command *grab = NULL; | ||||
|        | ||||
|       virtual void output(std::stringstream &data); | ||||
|        | ||||
|       /// 
 | ||||
| @ -31,14 +36,14 @@ namespace core { | ||||
|       /// to the session containing the stream.
 | ||||
|       ///
 | ||||
|        | ||||
|       void send(); | ||||
|       void send(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. 
 | ||||
|       ///
 | ||||
|        | ||||
|       void sendToAll(); | ||||
|       void sendToAll(std::string data); | ||||
|        | ||||
|       ///
 | ||||
|       /// Use this sendToAll method to output the contents of the out stream
 | ||||
| @ -46,9 +51,7 @@ namespace core { | ||||
|       /// and the entries identified by the passed in filter object.
 | ||||
|       ///
 | ||||
|        | ||||
|       void sendToAll(SessionFilter filter); | ||||
|        | ||||
|       std::stringstream out; | ||||
|       void sendToAll(SessionFilter filter, std::string data); | ||||
|        | ||||
|       TCPServer &server; | ||||
|        | ||||
| @ -57,6 +60,14 @@ namespace core { | ||||
|       virtual void onDataReceived(std::string data) override;  | ||||
|       virtual void onRegister() override;     | ||||
|        | ||||
|       ///
 | ||||
|       /// 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.
 | ||||
|       ///
 | ||||
|        | ||||
|       virtual void onConnected(std::stringstream &out); | ||||
|        | ||||
|       ///
 | ||||
|       /// 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
 | ||||
| @ -64,7 +75,11 @@ namespace core { | ||||
|       /// processRequest method on the session input.
 | ||||
|       ///
 | ||||
|        | ||||
|       virtual void protocol(std::string data);  | ||||
|       virtual void protocol(std::stringstream &out, std::string data);  | ||||
| 
 | ||||
|     private: | ||||
|        | ||||
|       std::mutex mtx; | ||||
|        | ||||
|    }; | ||||
|     | ||||
|  | ||||
| @ -6,6 +6,8 @@ | ||||
| namespace core { | ||||
|     | ||||
|    TCPSocket::TCPSocket(EPoll &ePoll) : Socket(ePoll) {} | ||||
| 
 | ||||
|    TCPSocket::TCPSocket(EPoll &ePoll, std::string text) : Socket(ePoll, text) {} | ||||
|     | ||||
|    TCPSocket::~TCPSocket() {} | ||||
|     | ||||
|  | ||||
| @ -22,6 +22,7 @@ namespace core { | ||||
|     public: | ||||
| 
 | ||||
|       TCPSocket(EPoll &ePoll); | ||||
|       TCPSocket(EPoll &ePoll, std::string text); | ||||
|       ~TCPSocket(); | ||||
|   | ||||
|       void connect(IPAddress &address); | ||||
|  | ||||
| @ -82,7 +82,7 @@ namespace core { | ||||
|        | ||||
|    } | ||||
|     | ||||
|    void TLSSession::protocol(std::string data) { | ||||
|    void TLSSession::protocol(std::stringstream &out, std::string data) { | ||||
|        | ||||
|    } | ||||
|     | ||||
|  | ||||
| @ -35,7 +35,7 @@ namespace core { | ||||
|       ///
 | ||||
|        | ||||
|       virtual void output(std::stringstream &out); | ||||
|       virtual void protocol(std::string data) override; | ||||
|       virtual void protocol(std::stringstream &out, std::string data) override; | ||||
|        | ||||
|     protected: | ||||
|       void receiveData(char *buffer, int bufferLength) override; | ||||
|  | ||||
| @ -45,6 +45,8 @@ namespace core { | ||||
|       void NextLine(int lines); | ||||
|       void PreviousLine(int lines);    | ||||
|       void scrollArea(int start, int end); | ||||
| 
 | ||||
|       std::stringstream out; | ||||
|        | ||||
|    }; | ||||
|     | ||||
|  | ||||
							
								
								
									
										12
									
								
								Thread.cpp
									
									
									
									
									
								
							
							
						
						| @ -60,12 +60,12 @@ 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 & EPOLLOUT) ? "EPOLLOUT ": "");
 | ||||
| //      std::cout << ((events[ix].events & EPOLLRDHUP) ? "EPOLLRDHUP ": "");
 | ||||
| //      std::cout << ((events[ix].events & EPOLLHUP) ? "EPOLLHUP ": "");
 | ||||
| //      std::cout << "." << std::endl;    
 | ||||
|       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]);             | ||||
| 	    }             | ||||
| 	 }       | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
| 
 | ||||
| namespace core { | ||||
|     | ||||
|    Timer::Timer(EPoll &ePoll, double delay = 0.0f) : Socket(ePoll) { | ||||
|    Timer::Timer(EPoll &ePoll, double delay = 0.0f) : Socket(ePoll, "Timer") { | ||||
|       setDescriptor(timerfd_create(CLOCK_REALTIME, 0)); | ||||
|       ePoll.registerSocket(this); | ||||
|       setTimer(delay); | ||||
|  | ||||
							
								
								
									
										3
									
								
								compile
									
									
									
									
									
								
							
							
						
						| @ -27,3 +27,6 @@ else | ||||
|  exit -1 | ||||
| fi    | ||||
| 
 | ||||
| echo -n "Building library documentation manual..." | ||||
| doxygen docs/latex/doxygen.sty >/dev/null 2>/dev/null | ||||
| echo "OK" | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/bc_s.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 676 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/bdwn.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 147 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/closed.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 132 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/doc.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 746 B | 
							
								
								
									
										1596
									
								
								docs/latex/html/doxygen.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/doxygen.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.7 KiB | 
							
								
								
									
										97
									
								
								docs/latex/html/dynsections.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -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<level+1) { | ||||
|       i.removeClass('iconfopen iconfclosed').addClass('iconfopen'); | ||||
|       a.html('▼'); | ||||
|       $(this).show(); | ||||
|     } else if (l==level+1) { | ||||
|       i.removeClass('iconfclosed iconfopen').addClass('iconfclosed'); | ||||
|       a.html('►'); | ||||
|       $(this).show(); | ||||
|     } else { | ||||
|       $(this).hide(); | ||||
|     } | ||||
|   }); | ||||
|   updateStripes(); | ||||
| } | ||||
| 
 | ||||
| function toggleFolder(id) | ||||
| { | ||||
|   // the clicked row
 | ||||
|   var currentRow = $('#row_'+id); | ||||
| 
 | ||||
|   // all rows after the clicked row
 | ||||
|   var rows = currentRow.nextAll("tr"); | ||||
| 
 | ||||
|   var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
 | ||||
| 
 | ||||
|   // only match elements AFTER this one (can't hide elements before)
 | ||||
|   var childRows = rows.filter(function() { return this.id.match(re); }); | ||||
| 
 | ||||
|   // first row is visible we are HIDING
 | ||||
|   if (childRows.filter(':first').is(':visible')===true) { | ||||
|     // replace down arrow by right arrow for current row
 | ||||
|     var currentRowSpans = currentRow.find("span"); | ||||
|     currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); | ||||
|     currentRowSpans.filter(".arrow").html('►'); | ||||
|     rows.filter("[id^=row_"+id+"]").hide(); // hide all children
 | ||||
|   } else { // we are SHOWING
 | ||||
|     // replace right arrow by down arrow for current row
 | ||||
|     var currentRowSpans = currentRow.find("span"); | ||||
|     currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen"); | ||||
|     currentRowSpans.filter(".arrow").html('▼'); | ||||
|     // replace down arrows by right arrows for child rows
 | ||||
|     var childRowsSpans = childRows.find("span"); | ||||
|     childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); | ||||
|     childRowsSpans.filter(".arrow").html('►'); | ||||
|     childRows.show(); //show all children
 | ||||
|   } | ||||
|   updateStripes(); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| function toggleInherit(id) | ||||
| { | ||||
|   var rows = $('tr.inherit.'+id); | ||||
|   var img = $('tr.inherit_header.'+id+' img'); | ||||
|   var src = $(img).attr('src'); | ||||
|   if (rows.filter(':first').is(':visible')===true) { | ||||
|     rows.css('display','none'); | ||||
|     $(img).attr('src',src.substring(0,src.length-8)+'closed.png'); | ||||
|   } else { | ||||
|     rows.css('display','table-row'); // using show() causes jump in firefox
 | ||||
|     $(img).attr('src',src.substring(0,src.length-10)+'open.png'); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/folderclosed.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 616 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/folderopen.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 597 B | 
							
								
								
									
										102
									
								
								docs/latex/html/graph_legend.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,102 @@ | ||||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||||
| <html xmlns="http://www.w3.org/1999/xhtml"> | ||||
| <head> | ||||
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> | ||||
| <meta http-equiv="X-UA-Compatible" content="IE=9"/> | ||||
| <meta name="generator" content="Doxygen 1.8.13"/> | ||||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||||
| <title>My Project: Graph Legend</title> | ||||
| <link href="tabs.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="jquery.js"></script> | ||||
| <script type="text/javascript" src="dynsections.js"></script> | ||||
| <link href="search/search.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="search/searchdata.js"></script> | ||||
| <script type="text/javascript" src="search/search.js"></script> | ||||
| <link href="doxygen.css" rel="stylesheet" type="text/css" /> | ||||
| </head> | ||||
| <body> | ||||
| <div id="top"><!-- do not remove this div, it is closed by doxygen! --> | ||||
| <div id="titlearea"> | ||||
| <table cellspacing="0" cellpadding="0"> | ||||
|  <tbody> | ||||
|  <tr style="height: 56px;"> | ||||
|   <td id="projectalign" style="padding-left: 0.5em;"> | ||||
|    <div id="projectname">My Project | ||||
|    </div> | ||||
|   </td> | ||||
|  </tr> | ||||
|  </tbody> | ||||
| </table> | ||||
| </div> | ||||
| <!-- end header part --> | ||||
| <!-- Generated by Doxygen 1.8.13 --> | ||||
| <script type="text/javascript"> | ||||
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); | ||||
| </script> | ||||
| <script type="text/javascript" src="menudata.js"></script> | ||||
| <script type="text/javascript" src="menu.js"></script> | ||||
| <script type="text/javascript"> | ||||
| $(function() { | ||||
|   initMenu('',true,false,'search.php','Search'); | ||||
|   $(document).ready(function() { init_search(); }); | ||||
| }); | ||||
| </script> | ||||
| <div id="main-nav"></div> | ||||
| </div><!-- top --> | ||||
| <!-- window showing the filter options --> | ||||
| <div id="MSearchSelectWindow" | ||||
|      onmouseover="return searchBox.OnSearchSelectShow()" | ||||
|      onmouseout="return searchBox.OnSearchSelectHide()" | ||||
|      onkeydown="return searchBox.OnSearchSelectKey(event)"> | ||||
| </div> | ||||
| 
 | ||||
| <!-- iframe showing the search results (closed by default) --> | ||||
| <div id="MSearchResultsWindow"> | ||||
| <iframe src="javascript:void(0)" frameborder="0"  | ||||
|         name="MSearchResults" id="MSearchResults"> | ||||
| </iframe> | ||||
| </div> | ||||
| 
 | ||||
| <div class="header"> | ||||
|   <div class="headertitle"> | ||||
| <div class="title">Graph Legend</div>  </div> | ||||
| </div><!--header--> | ||||
| <div class="contents"> | ||||
| <p>This page explains how to interpret the graphs that are generated by doxygen.</p> | ||||
| <p>Consider the following example: </p><div class="fragment"><div class="line">/*! Invisible class because of truncation */</div><div class="line">class Invisible { };</div><div class="line"></div><div class="line">/*! Truncated class, inheritance relation is hidden */</div><div class="line">class Truncated : public Invisible { };</div><div class="line"></div><div class="line">/* Class not documented with doxygen comments */</div><div class="line">class Undocumented { };</div><div class="line"></div><div class="line">/*! Class that is inherited using public inheritance */</div><div class="line">class PublicBase : public Truncated { };</div><div class="line"></div><div class="line">/*! A template class */</div><div class="line">template<class T> class Templ { };</div><div class="line"></div><div class="line">/*! Class that is inherited using protected inheritance */</div><div class="line">class ProtectedBase { };</div><div class="line"></div><div class="line">/*! Class that is inherited using private inheritance */</div><div class="line">class PrivateBase { };</div><div class="line"></div><div class="line">/*! Class that is used by the Inherited class */</div><div class="line">class Used { };</div><div class="line"></div><div class="line">/*! Super class that inherits a number of other classes */</div><div class="line">class Inherited : public PublicBase,</div><div class="line">                  protected ProtectedBase,</div><div class="line">                  private PrivateBase,</div><div class="line">                  public Undocumented,</div><div class="line">                  public Templ<int></div><div class="line">{</div><div class="line">  private:</div><div class="line">    Used *m_usedClass;</div><div class="line">};</div></div><!-- fragment --><p> This will result in the following graph:</p> | ||||
| <center><div class="image"> | ||||
| <img src="graph_legend.png"/> | ||||
| </div> | ||||
| </center><p>The boxes in the above graph have the following meaning: </p> | ||||
| <ul> | ||||
| <li> | ||||
| A filled gray box represents the struct or class for which the graph is generated. </li> | ||||
| <li> | ||||
| A box with a black border denotes a documented struct or class. </li> | ||||
| <li> | ||||
| A box with a gray border denotes an undocumented struct or class. </li> | ||||
| <li> | ||||
| 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. </li> | ||||
| </ul> | ||||
| <p>The arrows have the following meaning: </p> | ||||
| <ul> | ||||
| <li> | ||||
| A dark blue arrow is used to visualize a public inheritance relation between two classes. </li> | ||||
| <li> | ||||
| A dark green arrow is used for protected inheritance. </li> | ||||
| <li> | ||||
| A dark red arrow is used for private inheritance. </li> | ||||
| <li> | ||||
| 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. </li> | ||||
| <li> | ||||
| 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. </li> | ||||
| </ul> | ||||
| </div><!-- contents --> | ||||
| <!-- start footer part --> | ||||
| <hr class="footer"/><address class="footer"><small> | ||||
| Generated by  <a href="http://www.doxygen.org/index.html"> | ||||
| <img class="footer" src="doxygen.png" alt="doxygen"/> | ||||
| </a> 1.8.13 | ||||
| </small></address> | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										1
									
								
								docs/latex/html/graph_legend.md5
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | ||||
| 387ff8eb65306fa251338d3c9bd7bfff | ||||
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/graph_legend.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 20 KiB | 
							
								
								
									
										73
									
								
								docs/latex/html/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,73 @@ | ||||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||||
| <html xmlns="http://www.w3.org/1999/xhtml"> | ||||
| <head> | ||||
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> | ||||
| <meta http-equiv="X-UA-Compatible" content="IE=9"/> | ||||
| <meta name="generator" content="Doxygen 1.8.13"/> | ||||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||||
| <title>My Project: Main Page</title> | ||||
| <link href="tabs.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="jquery.js"></script> | ||||
| <script type="text/javascript" src="dynsections.js"></script> | ||||
| <link href="search/search.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="search/searchdata.js"></script> | ||||
| <script type="text/javascript" src="search/search.js"></script> | ||||
| <link href="doxygen.css" rel="stylesheet" type="text/css" /> | ||||
| </head> | ||||
| <body> | ||||
| <div id="top"><!-- do not remove this div, it is closed by doxygen! --> | ||||
| <div id="titlearea"> | ||||
| <table cellspacing="0" cellpadding="0"> | ||||
|  <tbody> | ||||
|  <tr style="height: 56px;"> | ||||
|   <td id="projectalign" style="padding-left: 0.5em;"> | ||||
|    <div id="projectname">My Project | ||||
|    </div> | ||||
|   </td> | ||||
|  </tr> | ||||
|  </tbody> | ||||
| </table> | ||||
| </div> | ||||
| <!-- end header part --> | ||||
| <!-- Generated by Doxygen 1.8.13 --> | ||||
| <script type="text/javascript"> | ||||
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); | ||||
| </script> | ||||
| <script type="text/javascript" src="menudata.js"></script> | ||||
| <script type="text/javascript" src="menu.js"></script> | ||||
| <script type="text/javascript"> | ||||
| $(function() { | ||||
|   initMenu('',true,false,'search.php','Search'); | ||||
|   $(document).ready(function() { init_search(); }); | ||||
| }); | ||||
| </script> | ||||
| <div id="main-nav"></div> | ||||
| </div><!-- top --> | ||||
| <!-- window showing the filter options --> | ||||
| <div id="MSearchSelectWindow" | ||||
|      onmouseover="return searchBox.OnSearchSelectShow()" | ||||
|      onmouseout="return searchBox.OnSearchSelectHide()" | ||||
|      onkeydown="return searchBox.OnSearchSelectKey(event)"> | ||||
| </div> | ||||
| 
 | ||||
| <!-- iframe showing the search results (closed by default) --> | ||||
| <div id="MSearchResultsWindow"> | ||||
| <iframe src="javascript:void(0)" frameborder="0"  | ||||
|         name="MSearchResults" id="MSearchResults"> | ||||
| </iframe> | ||||
| </div> | ||||
| 
 | ||||
| <div class="header"> | ||||
|   <div class="headertitle"> | ||||
| <div class="title">My Project Documentation</div>  </div> | ||||
| </div><!--header--> | ||||
| <div class="contents"> | ||||
| </div><!-- contents --> | ||||
| <!-- start footer part --> | ||||
| <hr class="footer"/><address class="footer"><small> | ||||
| Generated by  <a href="http://www.doxygen.org/index.html"> | ||||
| <img class="footer" src="doxygen.png" alt="doxygen"/> | ||||
| </a> 1.8.13 | ||||
| </small></address> | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										87
									
								
								docs/latex/html/jquery.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										26
									
								
								docs/latex/html/menu.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,26 @@ | ||||
| function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { | ||||
|   function makeTree(data,relPath) { | ||||
|     var result=''; | ||||
|     if ('children' in data) { | ||||
|       result+='<ul>'; | ||||
|       for (var i in data.children) { | ||||
|         result+='<li><a href="'+relPath+data.children[i].url+'">'+ | ||||
|                                 data.children[i].text+'</a>'+ | ||||
|                                 makeTree(data.children[i],relPath)+'</li>'; | ||||
|       } | ||||
|       result+='</ul>'; | ||||
|     } | ||||
|     return result; | ||||
|   } | ||||
| 
 | ||||
|   $('#main-nav').append(makeTree(menudata,relPath)); | ||||
|   $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); | ||||
|   if (searchEnabled) { | ||||
|     if (serverSide) { | ||||
|       $('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><div class="left"><form id="FSearchBox" action="'+searchPage+'" method="get"><img id="MSearchSelect" src="'+relPath+'search/mag.png" alt=""/><input type="text" id="MSearchField" name="query" value="'+search+'" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"></form></div><div class="right"></div></div></li>'); | ||||
|     } else { | ||||
|       $('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><span class="left"><img id="MSearchSelect" src="'+relPath+'search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/><input type="text" id="MSearchField" value="'+search+'" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/></span><span class="right"><a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="'+relPath+'search/close.png" alt=""/></a></span></div></li>'); | ||||
|     } | ||||
|   } | ||||
|   $('#main-menu').smartmenus(); | ||||
| } | ||||
							
								
								
									
										2
									
								
								docs/latex/html/menudata.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,2 @@ | ||||
| var menudata={children:[ | ||||
| {text:"Main Page",url:"index.html"}]} | ||||
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/nav_f.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 153 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/nav_g.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 95 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/nav_h.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 98 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/open.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 123 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/search/close.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 273 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/search/mag_sel.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 563 B | 
							
								
								
									
										12
									
								
								docs/latex/html/search/nomatches.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,12 @@ | ||||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||||
| <html><head><title></title> | ||||
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> | ||||
| <link rel="stylesheet" type="text/css" href="search.css"/> | ||||
| <script type="text/javascript" src="search.js"></script> | ||||
| </head> | ||||
| <body class="SRPage"> | ||||
| <div id="SRIndex"> | ||||
| <div class="SRStatus" id="NoMatches">No Matches</div> | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										271
									
								
								docs/latex/html/search/search.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,271 @@ | ||||
| /*---------------- Search Box */ | ||||
| 
 | ||||
| #FSearchBox { | ||||
|     float: left; | ||||
| } | ||||
| 
 | ||||
| #MSearchBox { | ||||
|     white-space : nowrap; | ||||
|     float: none; | ||||
|     margin-top: 8px; | ||||
|     right: 0px; | ||||
|     width: 170px; | ||||
|     height: 24px; | ||||
|     z-index: 102; | ||||
| } | ||||
| 
 | ||||
| #MSearchBox .left | ||||
| { | ||||
|     display:block; | ||||
|     position:absolute; | ||||
|     left:10px; | ||||
|     width:20px; | ||||
|     height:19px; | ||||
|     background:url('search_l.png') no-repeat; | ||||
|     background-position:right; | ||||
| } | ||||
| 
 | ||||
| #MSearchSelect { | ||||
|     display:block; | ||||
|     position:absolute; | ||||
|     width:20px; | ||||
|     height:19px; | ||||
| } | ||||
| 
 | ||||
| .left #MSearchSelect { | ||||
|     left:4px; | ||||
| } | ||||
| 
 | ||||
| .right #MSearchSelect { | ||||
|     right:5px; | ||||
| } | ||||
| 
 | ||||
| #MSearchField { | ||||
|     display:block; | ||||
|     position:absolute; | ||||
|     height:19px; | ||||
|     background:url('search_m.png') repeat-x; | ||||
|     border:none; | ||||
|     width:115px; | ||||
|     margin-left:20px; | ||||
|     padding-left:4px; | ||||
|     color: #909090; | ||||
|     outline: none; | ||||
|     font: 9pt Arial, Verdana, sans-serif; | ||||
|     -webkit-border-radius: 0px; | ||||
| } | ||||
| 
 | ||||
| #FSearchBox #MSearchField { | ||||
|     margin-left:15px; | ||||
| } | ||||
| 
 | ||||
| #MSearchBox .right { | ||||
|     display:block; | ||||
|     position:absolute; | ||||
|     right:10px; | ||||
|     top:8px; | ||||
|     width:20px; | ||||
|     height:19px; | ||||
|     background:url('search_r.png') no-repeat; | ||||
|     background-position:left; | ||||
| } | ||||
| 
 | ||||
| #MSearchClose { | ||||
|     display: none; | ||||
|     position: absolute; | ||||
|     top: 4px; | ||||
|     background : none; | ||||
|     border: none; | ||||
|     margin: 0px 4px 0px 0px; | ||||
|     padding: 0px 0px; | ||||
|     outline: none; | ||||
| } | ||||
| 
 | ||||
| .left #MSearchClose { | ||||
|     left: 6px; | ||||
| } | ||||
| 
 | ||||
| .right #MSearchClose { | ||||
|     right: 2px; | ||||
| } | ||||
| 
 | ||||
| .MSearchBoxActive #MSearchField { | ||||
|     color: #000000; | ||||
| } | ||||
| 
 | ||||
| /*---------------- Search filter selection */ | ||||
| 
 | ||||
| #MSearchSelectWindow { | ||||
|     display: none; | ||||
|     position: absolute; | ||||
|     left: 0; top: 0; | ||||
|     border: 1px solid #90A5CE; | ||||
|     background-color: #F9FAFC; | ||||
|     z-index: 10001; | ||||
|     padding-top: 4px; | ||||
|     padding-bottom: 4px; | ||||
|     -moz-border-radius: 4px; | ||||
|     -webkit-border-top-left-radius: 4px; | ||||
|     -webkit-border-top-right-radius: 4px; | ||||
|     -webkit-border-bottom-left-radius: 4px; | ||||
|     -webkit-border-bottom-right-radius: 4px; | ||||
|     -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); | ||||
| } | ||||
| 
 | ||||
| .SelectItem { | ||||
|     font: 8pt Arial, Verdana, sans-serif; | ||||
|     padding-left:  2px; | ||||
|     padding-right: 12px; | ||||
|     border: 0px; | ||||
| } | ||||
| 
 | ||||
| span.SelectionMark { | ||||
|     margin-right: 4px; | ||||
|     font-family: monospace; | ||||
|     outline-style: none; | ||||
|     text-decoration: none; | ||||
| } | ||||
| 
 | ||||
| a.SelectItem { | ||||
|     display: block; | ||||
|     outline-style: none; | ||||
|     color: #000000;  | ||||
|     text-decoration: none; | ||||
|     padding-left:   6px; | ||||
|     padding-right: 12px; | ||||
| } | ||||
| 
 | ||||
| a.SelectItem:focus, | ||||
| a.SelectItem:active { | ||||
|     color: #000000;  | ||||
|     outline-style: none; | ||||
|     text-decoration: none; | ||||
| } | ||||
| 
 | ||||
| a.SelectItem:hover { | ||||
|     color: #FFFFFF; | ||||
|     background-color: #3D578C; | ||||
|     outline-style: none; | ||||
|     text-decoration: none; | ||||
|     cursor: pointer; | ||||
|     display: block; | ||||
| } | ||||
| 
 | ||||
| /*---------------- Search results window */ | ||||
| 
 | ||||
| iframe#MSearchResults { | ||||
|     width: 60ex; | ||||
|     height: 15em; | ||||
| } | ||||
| 
 | ||||
| #MSearchResultsWindow { | ||||
|     display: none; | ||||
|     position: absolute; | ||||
|     left: 0; top: 0; | ||||
|     border: 1px solid #000; | ||||
|     background-color: #EEF1F7; | ||||
|     z-index:10000; | ||||
| } | ||||
| 
 | ||||
| /* ----------------------------------- */ | ||||
| 
 | ||||
| 
 | ||||
| #SRIndex { | ||||
|     clear:both;  | ||||
|     padding-bottom: 15px; | ||||
| } | ||||
| 
 | ||||
| .SREntry { | ||||
|     font-size: 10pt; | ||||
|     padding-left: 1ex; | ||||
| } | ||||
| 
 | ||||
| .SRPage .SREntry { | ||||
|     font-size: 8pt; | ||||
|     padding: 1px 5px; | ||||
| } | ||||
| 
 | ||||
| body.SRPage { | ||||
|     margin: 5px 2px; | ||||
| } | ||||
| 
 | ||||
| .SRChildren { | ||||
|     padding-left: 3ex; padding-bottom: .5em  | ||||
| } | ||||
| 
 | ||||
| .SRPage .SRChildren { | ||||
|     display: none; | ||||
| } | ||||
| 
 | ||||
| .SRSymbol { | ||||
|     font-weight: bold;  | ||||
|     color: #425E97; | ||||
|     font-family: Arial, Verdana, sans-serif; | ||||
|     text-decoration: none; | ||||
|     outline: none; | ||||
| } | ||||
| 
 | ||||
| a.SRScope { | ||||
|     display: block; | ||||
|     color: #425E97;  | ||||
|     font-family: Arial, Verdana, sans-serif; | ||||
|     text-decoration: none; | ||||
|     outline: none; | ||||
| } | ||||
| 
 | ||||
| a.SRSymbol:focus, a.SRSymbol:active, | ||||
| a.SRScope:focus, a.SRScope:active { | ||||
|     text-decoration: underline; | ||||
| } | ||||
| 
 | ||||
| span.SRScope { | ||||
|     padding-left: 4px; | ||||
| } | ||||
| 
 | ||||
| .SRPage .SRStatus { | ||||
|     padding: 2px 5px; | ||||
|     font-size: 8pt; | ||||
|     font-style: italic; | ||||
| } | ||||
| 
 | ||||
| .SRResult { | ||||
|     display: none; | ||||
| } | ||||
| 
 | ||||
| DIV.searchresults { | ||||
|     margin-left: 10px; | ||||
|     margin-right: 10px; | ||||
| } | ||||
| 
 | ||||
| /*---------------- External search page results */ | ||||
| 
 | ||||
| .searchresult { | ||||
|     background-color: #F0F3F8; | ||||
| } | ||||
| 
 | ||||
| .pages b { | ||||
|    color: white; | ||||
|    padding: 5px 5px 3px 5px; | ||||
|    background-image: url("../tab_a.png"); | ||||
|    background-repeat: repeat-x; | ||||
|    text-shadow: 0 1px 1px #000000; | ||||
| } | ||||
| 
 | ||||
| .pages { | ||||
|     line-height: 17px; | ||||
|     margin-left: 4px; | ||||
|     text-decoration: none; | ||||
| } | ||||
| 
 | ||||
| .hl { | ||||
|     font-weight: bold; | ||||
| } | ||||
| 
 | ||||
| #searchresults { | ||||
|     margin-bottom: 20px; | ||||
| } | ||||
| 
 | ||||
| .searchpages { | ||||
|     margin-top: 10px; | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										791
									
								
								docs/latex/html/search/search.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,791 @@ | ||||
| function convertToId(search) | ||||
| { | ||||
|   var result = ''; | ||||
|   for (i=0;i<search.length;i++) | ||||
|   { | ||||
|     var c = search.charAt(i); | ||||
|     var cn = c.charCodeAt(0); | ||||
|     if (c.match(/[a-z0-9\u0080-\uFFFF]/)) | ||||
|     { | ||||
|       result+=c; | ||||
|     } | ||||
|     else if (cn<16) | ||||
|     { | ||||
|       result+="_0"+cn.toString(16); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|       result+="_"+cn.toString(16); | ||||
|     } | ||||
|   } | ||||
|   return result; | ||||
| } | ||||
| 
 | ||||
| function getXPos(item) | ||||
| { | ||||
|   var x = 0; | ||||
|   if (item.offsetWidth) | ||||
|   { | ||||
|     while (item && item!=document.body) | ||||
|     { | ||||
|       x   += item.offsetLeft; | ||||
|       item = item.offsetParent; | ||||
|     } | ||||
|   } | ||||
|   return x; | ||||
| } | ||||
| 
 | ||||
| function getYPos(item) | ||||
| { | ||||
|   var y = 0; | ||||
|   if (item.offsetWidth) | ||||
|   { | ||||
|      while (item && item!=document.body) | ||||
|      { | ||||
|        y   += item.offsetTop; | ||||
|        item = item.offsetParent; | ||||
|      } | ||||
|   } | ||||
|   return y; | ||||
| } | ||||
| 
 | ||||
| /* A class handling everything associated with the search panel. | ||||
| 
 | ||||
|    Parameters: | ||||
|    name - The name of the global variable that will be | ||||
|           storing this instance.  Is needed to be able to set timeouts. | ||||
|    resultPath - path to use for external files | ||||
| */ | ||||
| function SearchBox(name, resultsPath, inFrame, label) | ||||
| { | ||||
|   if (!name || !resultsPath) {  alert("Missing parameters to SearchBox."); } | ||||
| 
 | ||||
|   // ---------- Instance variables
 | ||||
|   this.name                  = name; | ||||
|   this.resultsPath           = resultsPath; | ||||
|   this.keyTimeout            = 0; | ||||
|   this.keyTimeoutLength      = 500; | ||||
|   this.closeSelectionTimeout = 300; | ||||
|   this.lastSearchValue       = ""; | ||||
|   this.lastResultsPage       = ""; | ||||
|   this.hideTimeout           = 0; | ||||
|   this.searchIndex           = 0; | ||||
|   this.searchActive          = false; | ||||
|   this.insideFrame           = inFrame; | ||||
|   this.searchLabel           = label; | ||||
| 
 | ||||
|   // ----------- DOM Elements
 | ||||
| 
 | ||||
|   this.DOMSearchField = function() | ||||
|   {  return document.getElementById("MSearchField");  } | ||||
| 
 | ||||
|   this.DOMSearchSelect = function() | ||||
|   {  return document.getElementById("MSearchSelect");  } | ||||
| 
 | ||||
|   this.DOMSearchSelectWindow = function() | ||||
|   {  return document.getElementById("MSearchSelectWindow");  } | ||||
| 
 | ||||
|   this.DOMPopupSearchResults = function() | ||||
|   {  return document.getElementById("MSearchResults");  } | ||||
| 
 | ||||
|   this.DOMPopupSearchResultsWindow = function() | ||||
|   {  return document.getElementById("MSearchResultsWindow");  } | ||||
| 
 | ||||
|   this.DOMSearchClose = function() | ||||
|   {  return document.getElementById("MSearchClose"); } | ||||
| 
 | ||||
|   this.DOMSearchBox = function() | ||||
|   {  return document.getElementById("MSearchBox");  } | ||||
| 
 | ||||
|   // ------------ Event Handlers
 | ||||
| 
 | ||||
|   // Called when focus is added or removed from the search field.
 | ||||
|   this.OnSearchFieldFocus = function(isActive) | ||||
|   { | ||||
|     this.Activate(isActive); | ||||
|   } | ||||
| 
 | ||||
|   this.OnSearchSelectShow = function() | ||||
|   { | ||||
|     var searchSelectWindow = this.DOMSearchSelectWindow(); | ||||
|     var searchField        = this.DOMSearchSelect(); | ||||
| 
 | ||||
|     if (this.insideFrame) | ||||
|     { | ||||
|       var left = getXPos(searchField); | ||||
|       var top  = getYPos(searchField); | ||||
|       left += searchField.offsetWidth + 6; | ||||
|       top += searchField.offsetHeight; | ||||
| 
 | ||||
|       // show search selection popup
 | ||||
|       searchSelectWindow.style.display='block'; | ||||
|       left -= searchSelectWindow.offsetWidth; | ||||
|       searchSelectWindow.style.left =  left + 'px'; | ||||
|       searchSelectWindow.style.top  =  top  + 'px'; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|       var left = getXPos(searchField); | ||||
|       var top  = getYPos(searchField); | ||||
|       top += searchField.offsetHeight; | ||||
| 
 | ||||
|       // show search selection popup
 | ||||
|       searchSelectWindow.style.display='block'; | ||||
|       searchSelectWindow.style.left =  left + 'px'; | ||||
|       searchSelectWindow.style.top  =  top  + 'px'; | ||||
|     } | ||||
| 
 | ||||
|     // stop selection hide timer
 | ||||
|     if (this.hideTimeout) | ||||
|     { | ||||
|       clearTimeout(this.hideTimeout); | ||||
|       this.hideTimeout=0; | ||||
|     } | ||||
|     return false; // to avoid "image drag" default event
 | ||||
|   } | ||||
| 
 | ||||
|   this.OnSearchSelectHide = function() | ||||
|   { | ||||
|     this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()", | ||||
|                                   this.closeSelectionTimeout); | ||||
|   } | ||||
| 
 | ||||
|   // Called when the content of the search field is changed.
 | ||||
|   this.OnSearchFieldChange = function(evt) | ||||
|   { | ||||
|     if (this.keyTimeout) // kill running timer
 | ||||
|     { | ||||
|       clearTimeout(this.keyTimeout); | ||||
|       this.keyTimeout = 0; | ||||
|     } | ||||
| 
 | ||||
|     var e  = (evt) ? evt : window.event; // for IE
 | ||||
|     if (e.keyCode==40 || e.keyCode==13) | ||||
|     { | ||||
|       if (e.shiftKey==1) | ||||
|       { | ||||
|         this.OnSearchSelectShow(); | ||||
|         var win=this.DOMSearchSelectWindow(); | ||||
|         for (i=0;i<win.childNodes.length;i++) | ||||
|         { | ||||
|           var child = win.childNodes[i]; // get span within a
 | ||||
|           if (child.className=='SelectItem') | ||||
|           { | ||||
|             child.focus(); | ||||
|             return; | ||||
|           } | ||||
|         } | ||||
|         return; | ||||
|       } | ||||
|       else if (window.frames.MSearchResults.searchResults) | ||||
|       { | ||||
|         var elem = window.frames.MSearchResults.searchResults.NavNext(0); | ||||
|         if (elem) elem.focus(); | ||||
|       } | ||||
|     } | ||||
|     else if (e.keyCode==27) // Escape out of the search field
 | ||||
|     { | ||||
|       this.DOMSearchField().blur(); | ||||
|       this.DOMPopupSearchResultsWindow().style.display = 'none'; | ||||
|       this.DOMSearchClose().style.display = 'none'; | ||||
|       this.lastSearchValue = ''; | ||||
|       this.Activate(false); | ||||
|       return; | ||||
|     } | ||||
| 
 | ||||
|     // strip whitespaces
 | ||||
|     var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); | ||||
| 
 | ||||
|     if (searchValue != this.lastSearchValue) // search value has changed
 | ||||
|     { | ||||
|       if (searchValue != "") // non-empty search
 | ||||
|       { | ||||
|         // set timer for search update
 | ||||
|         this.keyTimeout = setTimeout(this.name + '.Search()', | ||||
|                                      this.keyTimeoutLength); | ||||
|       } | ||||
|       else // empty search field
 | ||||
|       { | ||||
|         this.DOMPopupSearchResultsWindow().style.display = 'none'; | ||||
|         this.DOMSearchClose().style.display = 'none'; | ||||
|         this.lastSearchValue = ''; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   this.SelectItemCount = function(id) | ||||
|   { | ||||
|     var count=0; | ||||
|     var win=this.DOMSearchSelectWindow(); | ||||
|     for (i=0;i<win.childNodes.length;i++) | ||||
|     { | ||||
|       var child = win.childNodes[i]; // get span within a
 | ||||
|       if (child.className=='SelectItem') | ||||
|       { | ||||
|         count++; | ||||
|       } | ||||
|     } | ||||
|     return count; | ||||
|   } | ||||
| 
 | ||||
|   this.SelectItemSet = function(id) | ||||
|   { | ||||
|     var i,j=0; | ||||
|     var win=this.DOMSearchSelectWindow(); | ||||
|     for (i=0;i<win.childNodes.length;i++) | ||||
|     { | ||||
|       var child = win.childNodes[i]; // get span within a
 | ||||
|       if (child.className=='SelectItem') | ||||
|       { | ||||
|         var node = child.firstChild; | ||||
|         if (j==id) | ||||
|         { | ||||
|           node.innerHTML='•'; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|           node.innerHTML=' '; | ||||
|         } | ||||
|         j++; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // Called when an search filter selection is made.
 | ||||
|   // set item with index id as the active item
 | ||||
|   this.OnSelectItem = function(id) | ||||
|   { | ||||
|     this.searchIndex = id; | ||||
|     this.SelectItemSet(id); | ||||
|     var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); | ||||
|     if (searchValue!="" && this.searchActive) // something was found -> do a search
 | ||||
|     { | ||||
|       this.Search(); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   this.OnSearchSelectKey = function(evt) | ||||
|   { | ||||
|     var e = (evt) ? evt : window.event; // for IE
 | ||||
|     if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
 | ||||
|     { | ||||
|       this.searchIndex++; | ||||
|       this.OnSelectItem(this.searchIndex); | ||||
|     } | ||||
|     else if (e.keyCode==38 && this.searchIndex>0) // Up
 | ||||
|     { | ||||
|       this.searchIndex--; | ||||
|       this.OnSelectItem(this.searchIndex); | ||||
|     } | ||||
|     else if (e.keyCode==13 || e.keyCode==27) | ||||
|     { | ||||
|       this.OnSelectItem(this.searchIndex); | ||||
|       this.CloseSelectionWindow(); | ||||
|       this.DOMSearchField().focus(); | ||||
|     } | ||||
|     return false; | ||||
|   } | ||||
| 
 | ||||
|   // --------- Actions
 | ||||
| 
 | ||||
|   // Closes the results window.
 | ||||
|   this.CloseResultsWindow = function() | ||||
|   { | ||||
|     this.DOMPopupSearchResultsWindow().style.display = 'none'; | ||||
|     this.DOMSearchClose().style.display = 'none'; | ||||
|     this.Activate(false); | ||||
|   } | ||||
| 
 | ||||
|   this.CloseSelectionWindow = function() | ||||
|   { | ||||
|     this.DOMSearchSelectWindow().style.display = 'none'; | ||||
|   } | ||||
| 
 | ||||
|   // Performs a search.
 | ||||
|   this.Search = function() | ||||
|   { | ||||
|     this.keyTimeout = 0; | ||||
| 
 | ||||
|     // strip leading whitespace
 | ||||
|     var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); | ||||
| 
 | ||||
|     var code = searchValue.toLowerCase().charCodeAt(0); | ||||
|     var idxChar = searchValue.substr(0, 1).toLowerCase(); | ||||
|     if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
 | ||||
|     { | ||||
|       idxChar = searchValue.substr(0, 2); | ||||
|     } | ||||
| 
 | ||||
|     var resultsPage; | ||||
|     var resultsPageWithSearch; | ||||
|     var hasResultsPage; | ||||
| 
 | ||||
|     var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); | ||||
|     if (idx!=-1) | ||||
|     { | ||||
|        var hexCode=idx.toString(16); | ||||
|        resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; | ||||
|        resultsPageWithSearch = resultsPage+'?'+escape(searchValue); | ||||
|        hasResultsPage = true; | ||||
|     } | ||||
|     else // nothing available for this search term
 | ||||
|     { | ||||
|        resultsPage = this.resultsPath + '/nomatches.html'; | ||||
|        resultsPageWithSearch = resultsPage; | ||||
|        hasResultsPage = false; | ||||
|     } | ||||
| 
 | ||||
|     window.frames.MSearchResults.location = resultsPageWithSearch; | ||||
|     var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); | ||||
| 
 | ||||
|     if (domPopupSearchResultsWindow.style.display!='block') | ||||
|     { | ||||
|        var domSearchBox = this.DOMSearchBox(); | ||||
|        this.DOMSearchClose().style.display = 'inline'; | ||||
|        if (this.insideFrame) | ||||
|        { | ||||
|          var domPopupSearchResults = this.DOMPopupSearchResults(); | ||||
|          domPopupSearchResultsWindow.style.position = 'relative'; | ||||
|          domPopupSearchResultsWindow.style.display  = 'block'; | ||||
|          var width = document.body.clientWidth - 8; // the -8 is for IE :-(
 | ||||
|          domPopupSearchResultsWindow.style.width    = width + 'px'; | ||||
|          domPopupSearchResults.style.width          = width + 'px'; | ||||
|        } | ||||
|        else | ||||
|        { | ||||
|          var domPopupSearchResults = this.DOMPopupSearchResults(); | ||||
|          var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
 | ||||
|          var top  = getYPos(domSearchBox) + 20;  // domSearchBox.offsetHeight + 1;
 | ||||
|          domPopupSearchResultsWindow.style.display = 'block'; | ||||
|          left -= domPopupSearchResults.offsetWidth; | ||||
|          domPopupSearchResultsWindow.style.top     = top  + 'px'; | ||||
|          domPopupSearchResultsWindow.style.left    = left + 'px'; | ||||
|        } | ||||
|     } | ||||
| 
 | ||||
|     this.lastSearchValue = searchValue; | ||||
|     this.lastResultsPage = resultsPage; | ||||
|   } | ||||
| 
 | ||||
|   // -------- Activation Functions
 | ||||
| 
 | ||||
|   // Activates or deactivates the search panel, resetting things to
 | ||||
|   // their default values if necessary.
 | ||||
|   this.Activate = function(isActive) | ||||
|   { | ||||
|     if (isActive || // open it
 | ||||
|         this.DOMPopupSearchResultsWindow().style.display == 'block' | ||||
|        ) | ||||
|     { | ||||
|       this.DOMSearchBox().className = 'MSearchBoxActive'; | ||||
| 
 | ||||
|       var searchField = this.DOMSearchField(); | ||||
| 
 | ||||
|       if (searchField.value == this.searchLabel) // clear "Search" term upon entry
 | ||||
|       { | ||||
|         searchField.value = ''; | ||||
|         this.searchActive = true; | ||||
|       } | ||||
|     } | ||||
|     else if (!isActive) // directly remove the panel
 | ||||
|     { | ||||
|       this.DOMSearchBox().className = 'MSearchBoxInactive'; | ||||
|       this.DOMSearchField().value   = this.searchLabel; | ||||
|       this.searchActive             = false; | ||||
|       this.lastSearchValue          = '' | ||||
|       this.lastResultsPage          = ''; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| // -----------------------------------------------------------------------
 | ||||
| 
 | ||||
| // The class that handles everything on the search results page.
 | ||||
| function SearchResults(name) | ||||
| { | ||||
|     // The number of matches from the last run of <Search()>.
 | ||||
|     this.lastMatchCount = 0; | ||||
|     this.lastKey = 0; | ||||
|     this.repeatOn = false; | ||||
| 
 | ||||
|     // Toggles the visibility of the passed element ID.
 | ||||
|     this.FindChildElement = function(id) | ||||
|     { | ||||
|       var parentElement = document.getElementById(id); | ||||
|       var element = parentElement.firstChild; | ||||
| 
 | ||||
|       while (element && element!=parentElement) | ||||
|       { | ||||
|         if (element.nodeName == 'DIV' && element.className == 'SRChildren') | ||||
|         { | ||||
|           return element; | ||||
|         } | ||||
| 
 | ||||
|         if (element.nodeName == 'DIV' && element.hasChildNodes()) | ||||
|         { | ||||
|            element = element.firstChild; | ||||
|         } | ||||
|         else if (element.nextSibling) | ||||
|         { | ||||
|            element = element.nextSibling; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|           do | ||||
|           { | ||||
|             element = element.parentNode; | ||||
|           } | ||||
|           while (element && element!=parentElement && !element.nextSibling); | ||||
| 
 | ||||
|           if (element && element!=parentElement) | ||||
|           { | ||||
|             element = element.nextSibling; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     this.Toggle = function(id) | ||||
|     { | ||||
|       var element = this.FindChildElement(id); | ||||
|       if (element) | ||||
|       { | ||||
|         if (element.style.display == 'block') | ||||
|         { | ||||
|           element.style.display = 'none'; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|           element.style.display = 'block'; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     // Searches for the passed string.  If there is no parameter,
 | ||||
|     // it takes it from the URL query.
 | ||||
|     //
 | ||||
|     // Always returns true, since other documents may try to call it
 | ||||
|     // and that may or may not be possible.
 | ||||
|     this.Search = function(search) | ||||
|     { | ||||
|       if (!search) // get search word from URL
 | ||||
|       { | ||||
|         search = window.location.search; | ||||
|         search = search.substring(1);  // Remove the leading '?'
 | ||||
|         search = unescape(search); | ||||
|       } | ||||
| 
 | ||||
|       search = search.replace(/^ +/, ""); // strip leading spaces
 | ||||
|       search = search.replace(/ +$/, ""); // strip trailing spaces
 | ||||
|       search = search.toLowerCase(); | ||||
|       search = convertToId(search); | ||||
| 
 | ||||
|       var resultRows = document.getElementsByTagName("div"); | ||||
|       var matches = 0; | ||||
| 
 | ||||
|       var i = 0; | ||||
|       while (i < resultRows.length) | ||||
|       { | ||||
|         var row = resultRows.item(i); | ||||
|         if (row.className == "SRResult") | ||||
|         { | ||||
|           var rowMatchName = row.id.toLowerCase(); | ||||
|           rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
 | ||||
| 
 | ||||
|           if (search.length<=rowMatchName.length && | ||||
|              rowMatchName.substr(0, search.length)==search) | ||||
|           { | ||||
|             row.style.display = 'block'; | ||||
|             matches++; | ||||
|           } | ||||
|           else | ||||
|           { | ||||
|             row.style.display = 'none'; | ||||
|           } | ||||
|         } | ||||
|         i++; | ||||
|       } | ||||
|       document.getElementById("Searching").style.display='none'; | ||||
|       if (matches == 0) // no results
 | ||||
|       { | ||||
|         document.getElementById("NoMatches").style.display='block'; | ||||
|       } | ||||
|       else // at least one result
 | ||||
|       { | ||||
|         document.getElementById("NoMatches").style.display='none'; | ||||
|       } | ||||
|       this.lastMatchCount = matches; | ||||
|       return true; | ||||
|     } | ||||
| 
 | ||||
|     // return the first item with index index or higher that is visible
 | ||||
|     this.NavNext = function(index) | ||||
|     { | ||||
|       var focusItem; | ||||
|       while (1) | ||||
|       { | ||||
|         var focusName = 'Item'+index; | ||||
|         focusItem = document.getElementById(focusName); | ||||
|         if (focusItem && focusItem.parentNode.parentNode.style.display=='block') | ||||
|         { | ||||
|           break; | ||||
|         } | ||||
|         else if (!focusItem) // last element
 | ||||
|         { | ||||
|           break; | ||||
|         } | ||||
|         focusItem=null; | ||||
|         index++; | ||||
|       } | ||||
|       return focusItem; | ||||
|     } | ||||
| 
 | ||||
|     this.NavPrev = function(index) | ||||
|     { | ||||
|       var focusItem; | ||||
|       while (1) | ||||
|       { | ||||
|         var focusName = 'Item'+index; | ||||
|         focusItem = document.getElementById(focusName); | ||||
|         if (focusItem && focusItem.parentNode.parentNode.style.display=='block') | ||||
|         { | ||||
|           break; | ||||
|         } | ||||
|         else if (!focusItem) // last element
 | ||||
|         { | ||||
|           break; | ||||
|         } | ||||
|         focusItem=null; | ||||
|         index--; | ||||
|       } | ||||
|       return focusItem; | ||||
|     } | ||||
| 
 | ||||
|     this.ProcessKeys = function(e) | ||||
|     { | ||||
|       if (e.type == "keydown") | ||||
|       { | ||||
|         this.repeatOn = false; | ||||
|         this.lastKey = e.keyCode; | ||||
|       } | ||||
|       else if (e.type == "keypress") | ||||
|       { | ||||
|         if (!this.repeatOn) | ||||
|         { | ||||
|           if (this.lastKey) this.repeatOn = true; | ||||
|           return false; // ignore first keypress after keydown
 | ||||
|         } | ||||
|       } | ||||
|       else if (e.type == "keyup") | ||||
|       { | ||||
|         this.lastKey = 0; | ||||
|         this.repeatOn = false; | ||||
|       } | ||||
|       return this.lastKey!=0; | ||||
|     } | ||||
| 
 | ||||
|     this.Nav = function(evt,itemIndex) | ||||
|     { | ||||
|       var e  = (evt) ? evt : window.event; // for IE
 | ||||
|       if (e.keyCode==13) return true; | ||||
|       if (!this.ProcessKeys(e)) return false; | ||||
| 
 | ||||
|       if (this.lastKey==38) // Up
 | ||||
|       { | ||||
|         var newIndex = itemIndex-1; | ||||
|         var focusItem = this.NavPrev(newIndex); | ||||
|         if (focusItem) | ||||
|         { | ||||
|           var child = this.FindChildElement(focusItem.parentNode.parentNode.id); | ||||
|           if (child && child.style.display == 'block') // children visible
 | ||||
|           { | ||||
|             var n=0; | ||||
|             var tmpElem; | ||||
|             while (1) // search for last child
 | ||||
|             { | ||||
|               tmpElem = document.getElementById('Item'+newIndex+'_c'+n); | ||||
|               if (tmpElem) | ||||
|               { | ||||
|                 focusItem = tmpElem; | ||||
|               } | ||||
|               else // found it!
 | ||||
|               { | ||||
|                 break; | ||||
|               } | ||||
|               n++; | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|         if (focusItem) | ||||
|         { | ||||
|           focusItem.focus(); | ||||
|         } | ||||
|         else // return focus to search field
 | ||||
|         { | ||||
|            parent.document.getElementById("MSearchField").focus(); | ||||
|         } | ||||
|       } | ||||
|       else if (this.lastKey==40) // Down
 | ||||
|       { | ||||
|         var newIndex = itemIndex+1; | ||||
|         var focusItem; | ||||
|         var item = document.getElementById('Item'+itemIndex); | ||||
|         var elem = this.FindChildElement(item.parentNode.parentNode.id); | ||||
|         if (elem && elem.style.display == 'block') // children visible
 | ||||
|         { | ||||
|           focusItem = document.getElementById('Item'+itemIndex+'_c0'); | ||||
|         } | ||||
|         if (!focusItem) focusItem = this.NavNext(newIndex); | ||||
|         if (focusItem)  focusItem.focus(); | ||||
|       } | ||||
|       else if (this.lastKey==39) // Right
 | ||||
|       { | ||||
|         var item = document.getElementById('Item'+itemIndex); | ||||
|         var elem = this.FindChildElement(item.parentNode.parentNode.id); | ||||
|         if (elem) elem.style.display = 'block'; | ||||
|       } | ||||
|       else if (this.lastKey==37) // Left
 | ||||
|       { | ||||
|         var item = document.getElementById('Item'+itemIndex); | ||||
|         var elem = this.FindChildElement(item.parentNode.parentNode.id); | ||||
|         if (elem) elem.style.display = 'none'; | ||||
|       } | ||||
|       else if (this.lastKey==27) // Escape
 | ||||
|       { | ||||
|         parent.searchBox.CloseResultsWindow(); | ||||
|         parent.document.getElementById("MSearchField").focus(); | ||||
|       } | ||||
|       else if (this.lastKey==13) // Enter
 | ||||
|       { | ||||
|         return true; | ||||
|       } | ||||
|       return false; | ||||
|     } | ||||
| 
 | ||||
|     this.NavChild = function(evt,itemIndex,childIndex) | ||||
|     { | ||||
|       var e  = (evt) ? evt : window.event; // for IE
 | ||||
|       if (e.keyCode==13) return true; | ||||
|       if (!this.ProcessKeys(e)) return false; | ||||
| 
 | ||||
|       if (this.lastKey==38) // Up
 | ||||
|       { | ||||
|         if (childIndex>0) | ||||
|         { | ||||
|           var newIndex = childIndex-1; | ||||
|           document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); | ||||
|         } | ||||
|         else // already at first child, jump to parent
 | ||||
|         { | ||||
|           document.getElementById('Item'+itemIndex).focus(); | ||||
|         } | ||||
|       } | ||||
|       else if (this.lastKey==40) // Down
 | ||||
|       { | ||||
|         var newIndex = childIndex+1; | ||||
|         var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); | ||||
|         if (!elem) // last child, jump to parent next parent
 | ||||
|         { | ||||
|           elem = this.NavNext(itemIndex+1); | ||||
|         } | ||||
|         if (elem) | ||||
|         { | ||||
|           elem.focus(); | ||||
|         } | ||||
|       } | ||||
|       else if (this.lastKey==27) // Escape
 | ||||
|       { | ||||
|         parent.searchBox.CloseResultsWindow(); | ||||
|         parent.document.getElementById("MSearchField").focus(); | ||||
|       } | ||||
|       else if (this.lastKey==13) // Enter
 | ||||
|       { | ||||
|         return true; | ||||
|       } | ||||
|       return false; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| function setKeyActions(elem,action) | ||||
| { | ||||
|   elem.setAttribute('onkeydown',action); | ||||
|   elem.setAttribute('onkeypress',action); | ||||
|   elem.setAttribute('onkeyup',action); | ||||
| } | ||||
| 
 | ||||
| function setClassAttr(elem,attr) | ||||
| { | ||||
|   elem.setAttribute('class',attr); | ||||
|   elem.setAttribute('className',attr); | ||||
| } | ||||
| 
 | ||||
| function createResults() | ||||
| { | ||||
|   var results = document.getElementById("SRResults"); | ||||
|   for (var e=0; e<searchData.length; e++) | ||||
|   { | ||||
|     var id = searchData[e][0]; | ||||
|     var srResult = document.createElement('div'); | ||||
|     srResult.setAttribute('id','SR_'+id); | ||||
|     setClassAttr(srResult,'SRResult'); | ||||
|     var srEntry = document.createElement('div'); | ||||
|     setClassAttr(srEntry,'SREntry'); | ||||
|     var srLink = document.createElement('a'); | ||||
|     srLink.setAttribute('id','Item'+e); | ||||
|     setKeyActions(srLink,'return searchResults.Nav(event,'+e+')'); | ||||
|     setClassAttr(srLink,'SRSymbol'); | ||||
|     srLink.innerHTML = searchData[e][1][0]; | ||||
|     srEntry.appendChild(srLink); | ||||
|     if (searchData[e][1].length==2) // single result
 | ||||
|     { | ||||
|       srLink.setAttribute('href',searchData[e][1][1][0]); | ||||
|       if (searchData[e][1][1][1]) | ||||
|       { | ||||
|        srLink.setAttribute('target','_parent'); | ||||
|       } | ||||
|       var srScope = document.createElement('span'); | ||||
|       setClassAttr(srScope,'SRScope'); | ||||
|       srScope.innerHTML = searchData[e][1][1][2]; | ||||
|       srEntry.appendChild(srScope); | ||||
|     } | ||||
|     else // multiple results
 | ||||
|     { | ||||
|       srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); | ||||
|       var srChildren = document.createElement('div'); | ||||
|       setClassAttr(srChildren,'SRChildren'); | ||||
|       for (var c=0; c<searchData[e][1].length-1; c++) | ||||
|       { | ||||
|         var srChild = document.createElement('a'); | ||||
|         srChild.setAttribute('id','Item'+e+'_c'+c); | ||||
|         setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')'); | ||||
|         setClassAttr(srChild,'SRScope'); | ||||
|         srChild.setAttribute('href',searchData[e][1][c+1][0]); | ||||
|         if (searchData[e][1][c+1][1]) | ||||
|         { | ||||
|          srChild.setAttribute('target','_parent'); | ||||
|         } | ||||
|         srChild.innerHTML = searchData[e][1][c+1][2]; | ||||
|         srChildren.appendChild(srChild); | ||||
|       } | ||||
|       srEntry.appendChild(srChildren); | ||||
|     } | ||||
|     srResult.appendChild(srEntry); | ||||
|     results.appendChild(srResult); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| function init_search() | ||||
| { | ||||
|   var results = document.getElementById("MSearchSelectWindow"); | ||||
|   for (var key in indexSectionLabels) | ||||
|   { | ||||
|     var link = document.createElement('a'); | ||||
|     link.setAttribute('class','SelectItem'); | ||||
|     link.setAttribute('onclick','searchBox.OnSelectItem('+key+')'); | ||||
|     link.href='javascript:void(0)'; | ||||
|     link.innerHTML='<span class="SelectionMark"> </span>'+indexSectionLabels[key]; | ||||
|     results.appendChild(link); | ||||
|   } | ||||
|   searchBox.OnSelectItem(0); | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/search/search_l.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 604 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/search/search_m.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 158 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/search/search_r.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 612 B | 
							
								
								
									
										12
									
								
								docs/latex/html/search/searchdata.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,12 @@ | ||||
| var indexSectionsWithContent = | ||||
| { | ||||
| }; | ||||
| 
 | ||||
| var indexSectionNames = | ||||
| { | ||||
| }; | ||||
| 
 | ||||
| var indexSectionLabels = | ||||
| { | ||||
| }; | ||||
| 
 | ||||
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/splitbar.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 314 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/sync_off.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 853 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/sync_on.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 845 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/tab_a.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 142 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/tab_b.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 169 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/tab_h.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 177 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/latex/html/tab_s.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 184 B | 
							
								
								
									
										1
									
								
								docs/latex/html/tabs.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										21
									
								
								docs/latex/latex/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,21 @@ | ||||
| all: refman.pdf | ||||
| 
 | ||||
| pdf: refman.pdf | ||||
| 
 | ||||
| refman.pdf: clean refman.tex | ||||
| 	pdflatex refman | ||||
| 	makeindex refman.idx | ||||
| 	pdflatex refman | ||||
| 	latex_count=8 ; \
 | ||||
| 	while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
 | ||||
| 	    do \
 | ||||
| 	      echo "Rerunning latex...." ;\
 | ||||
| 	      pdflatex refman ;\
 | ||||
| 	      latex_count=`expr $$latex_count - 1` ;\
 | ||||
| 	    done | ||||
| 	makeindex refman.idx | ||||
| 	pdflatex refman | ||||
| 
 | ||||
| 
 | ||||
| clean: | ||||
| 	rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf | ||||
							
								
								
									
										503
									
								
								docs/latex/latex/doxygen.sty
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,503 @@ | ||||
| \NeedsTeXFormat{LaTeX2e} | ||||
| \ProvidesPackage{doxygen} | ||||
| 
 | ||||
| % Packages used by this style file | ||||
| \RequirePackage{alltt} | ||||
| \RequirePackage{array} | ||||
| \RequirePackage{calc} | ||||
| \RequirePackage{float} | ||||
| \RequirePackage{ifthen} | ||||
| \RequirePackage{verbatim} | ||||
| \RequirePackage[table]{xcolor} | ||||
| \RequirePackage{longtable} | ||||
| \RequirePackage{tabu} | ||||
| \RequirePackage{tabularx} | ||||
| \RequirePackage{multirow} | ||||
| 
 | ||||
| %---------- Internal commands used in this style file ---------------- | ||||
| 
 | ||||
| \newcommand{\ensurespace}[1]{% | ||||
|   \begingroup% | ||||
|     \setlength{\dimen@}{#1}% | ||||
|     \vskip\z@\@plus\dimen@% | ||||
|     \penalty -100\vskip\z@\@plus -\dimen@% | ||||
|     \vskip\dimen@% | ||||
|     \penalty 9999% | ||||
|     \vskip -\dimen@% | ||||
|     \vskip\z@skip% hide the previous |\vskip| from |\addvspace| | ||||
|   \endgroup% | ||||
| } | ||||
| 
 | ||||
| \newcommand{\DoxyLabelFont}{} | ||||
| \newcommand{\entrylabel}[1]{% | ||||
|   {% | ||||
|     \parbox[b]{\labelwidth-4pt}{% | ||||
|       \makebox[0pt][l]{\DoxyLabelFont#1}% | ||||
|       \vspace{1.5\baselineskip}% | ||||
|     }% | ||||
|   }% | ||||
| } | ||||
| 
 | ||||
| \newenvironment{DoxyDesc}[1]{% | ||||
|   \ensurespace{4\baselineskip}% | ||||
|   \begin{list}{}{% | ||||
|     \settowidth{\labelwidth}{20pt}% | ||||
|     \setlength{\parsep}{0pt}% | ||||
|     \setlength{\itemsep}{0pt}% | ||||
|     \setlength{\leftmargin}{\labelwidth+\labelsep}% | ||||
|     \renewcommand{\makelabel}{\entrylabel}% | ||||
|   }% | ||||
|   \item[#1]% | ||||
| }{% | ||||
|   \end{list}% | ||||
| } | ||||
| 
 | ||||
| \newsavebox{\xrefbox} | ||||
| \newlength{\xreflength} | ||||
| \newcommand{\xreflabel}[1]{% | ||||
|   \sbox{\xrefbox}{#1}% | ||||
|   \setlength{\xreflength}{\wd\xrefbox}% | ||||
|   \ifthenelse{\xreflength>\labelwidth}{% | ||||
|     \begin{minipage}{\textwidth}% | ||||
|       \setlength{\parindent}{0pt}% | ||||
|       \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% | ||||
|     \end{minipage}% | ||||
|   }{% | ||||
|    \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% | ||||
|   }% | ||||
| } | ||||
| 
 | ||||
| %---------- Commands used by doxygen LaTeX output generator ---------- | ||||
| 
 | ||||
| % Used by <pre> ... </pre> | ||||
| \newenvironment{DoxyPre}{% | ||||
|   \small% | ||||
|   \begin{alltt}% | ||||
| }{% | ||||
|   \end{alltt}% | ||||
|   \normalsize% | ||||
| } | ||||
| 
 | ||||
| % Used by @code ... @endcode | ||||
| \newenvironment{DoxyCode}{% | ||||
|   \par% | ||||
|   \scriptsize% | ||||
|   \begin{alltt}% | ||||
| }{% | ||||
|   \end{alltt}% | ||||
|   \normalsize% | ||||
| } | ||||
| 
 | ||||
| % Used by @example, @include, @includelineno and @dontinclude | ||||
| \newenvironment{DoxyCodeInclude}{% | ||||
|   \DoxyCode% | ||||
| }{% | ||||
|   \endDoxyCode% | ||||
| } | ||||
| 
 | ||||
| % Used by @verbatim ... @endverbatim | ||||
| \newenvironment{DoxyVerb}{% | ||||
|   \footnotesize% | ||||
|   \verbatim% | ||||
| }{% | ||||
|   \endverbatim% | ||||
|   \normalsize% | ||||
| } | ||||
| 
 | ||||
| % Used by @verbinclude | ||||
| \newenvironment{DoxyVerbInclude}{% | ||||
|   \DoxyVerb% | ||||
| }{% | ||||
|   \endDoxyVerb% | ||||
| } | ||||
| 
 | ||||
| % Used by numbered lists (using '-#' or <ol> ... </ol>) | ||||
| \newenvironment{DoxyEnumerate}{% | ||||
|   \enumerate% | ||||
| }{% | ||||
|   \endenumerate% | ||||
| } | ||||
| 
 | ||||
| % Used by bullet lists (using '-', @li, @arg, or <ul> ... </ul>) | ||||
| \newenvironment{DoxyItemize}{% | ||||
|   \itemize% | ||||
| }{% | ||||
|   \enditemize% | ||||
| } | ||||
| 
 | ||||
| % Used by description lists (using <dl> ... </dl>) | ||||
| \newenvironment{DoxyDescription}{% | ||||
|   \description% | ||||
| }{% | ||||
|   \enddescription% | ||||
| } | ||||
| 
 | ||||
| % Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc | ||||
| % (only if caption is specified) | ||||
| \newenvironment{DoxyImage}{% | ||||
|   \begin{figure}[H]% | ||||
|     \begin{center}% | ||||
| }{% | ||||
|     \end{center}% | ||||
|   \end{figure}% | ||||
| } | ||||
| 
 | ||||
| % Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc | ||||
| % (only if no caption is specified) | ||||
| \newenvironment{DoxyImageNoCaption}{% | ||||
|   \begin{center}% | ||||
| }{% | ||||
|   \end{center}% | ||||
| } | ||||
| 
 | ||||
| % Used by @attention | ||||
| \newenvironment{DoxyAttention}[1]{% | ||||
|   \begin{DoxyDesc}{#1}% | ||||
| }{% | ||||
|   \end{DoxyDesc}% | ||||
| } | ||||
| 
 | ||||
| % Used by @author and @authors | ||||
| \newenvironment{DoxyAuthor}[1]{% | ||||
|   \begin{DoxyDesc}{#1}% | ||||
| }{% | ||||
|   \end{DoxyDesc}% | ||||
| } | ||||
| 
 | ||||
| % Used by @date | ||||
| \newenvironment{DoxyDate}[1]{% | ||||
|   \begin{DoxyDesc}{#1}% | ||||
| }{% | ||||
|   \end{DoxyDesc}% | ||||
| } | ||||
| 
 | ||||
| % Used by @invariant | ||||
| \newenvironment{DoxyInvariant}[1]{% | ||||
|   \begin{DoxyDesc}{#1}% | ||||
| }{% | ||||
|   \end{DoxyDesc}% | ||||
| } | ||||
| 
 | ||||
| % Used by @note | ||||
| \newenvironment{DoxyNote}[1]{% | ||||
|   \begin{DoxyDesc}{#1}% | ||||
| }{% | ||||
|   \end{DoxyDesc}% | ||||
| } | ||||
| 
 | ||||
| % Used by @post | ||||
| \newenvironment{DoxyPostcond}[1]{% | ||||
|   \begin{DoxyDesc}{#1}% | ||||
| }{% | ||||
|   \end{DoxyDesc}% | ||||
| } | ||||
| 
 | ||||
| % Used by @pre | ||||
| \newenvironment{DoxyPrecond}[1]{% | ||||
|   \begin{DoxyDesc}{#1}% | ||||
| }{% | ||||
|   \end{DoxyDesc}% | ||||
| } | ||||
| 
 | ||||
| % Used by @copyright | ||||
| \newenvironment{DoxyCopyright}[1]{% | ||||
|   \begin{DoxyDesc}{#1}% | ||||
| }{% | ||||
|   \end{DoxyDesc}% | ||||
| } | ||||
| 
 | ||||
| % Used by @remark | ||||
| \newenvironment{DoxyRemark}[1]{% | ||||
|   \begin{DoxyDesc}{#1}% | ||||
| }{% | ||||
|   \end{DoxyDesc}% | ||||
| } | ||||
| 
 | ||||
| % Used by @return and @returns | ||||
| \newenvironment{DoxyReturn}[1]{% | ||||
|   \begin{DoxyDesc}{#1}% | ||||
| }{% | ||||
|   \end{DoxyDesc}% | ||||
| } | ||||
| 
 | ||||
| % Used by @since | ||||
| \newenvironment{DoxySince}[1]{% | ||||
|   \begin{DoxyDesc}{#1}% | ||||
| }{% | ||||
|   \end{DoxyDesc}% | ||||
| } | ||||
| 
 | ||||
| % Used by @see | ||||
| \newenvironment{DoxySeeAlso}[1]{% | ||||
|   \begin{DoxyDesc}{#1}% | ||||
| }{% | ||||
|   \end{DoxyDesc}% | ||||
| } | ||||
| 
 | ||||
| % Used by @version | ||||
| \newenvironment{DoxyVersion}[1]{% | ||||
|   \begin{DoxyDesc}{#1}% | ||||
| }{% | ||||
|   \end{DoxyDesc}% | ||||
| } | ||||
| 
 | ||||
| % Used by @warning | ||||
| \newenvironment{DoxyWarning}[1]{% | ||||
|   \begin{DoxyDesc}{#1}% | ||||
| }{% | ||||
|   \end{DoxyDesc}% | ||||
| } | ||||
| 
 | ||||
| % Used by @internal | ||||
| \newenvironment{DoxyInternal}[1]{% | ||||
|   \paragraph*{#1}% | ||||
| }{% | ||||
| } | ||||
| 
 | ||||
| % Used by @par and @paragraph | ||||
| \newenvironment{DoxyParagraph}[1]{% | ||||
|   \begin{list}{}{% | ||||
|     \settowidth{\labelwidth}{40pt}% | ||||
|     \setlength{\leftmargin}{\labelwidth}% | ||||
|     \setlength{\parsep}{0pt}% | ||||
|     \setlength{\itemsep}{-4pt}% | ||||
|     \renewcommand{\makelabel}{\entrylabel}% | ||||
|   }% | ||||
|   \item[#1]% | ||||
| }{% | ||||
|   \end{list}% | ||||
| } | ||||
| 
 | ||||
| % Used by parameter lists | ||||
| \newenvironment{DoxyParams}[2][]{% | ||||
|     \tabulinesep=1mm% | ||||
|     \par% | ||||
|     \ifthenelse{\equal{#1}{}}% | ||||
|       {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description | ||||
|     {\ifthenelse{\equal{#1}{1}}% | ||||
|       {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc | ||||
|       {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc | ||||
|     } | ||||
|     \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% | ||||
|     \hline% | ||||
|     \endfirsthead% | ||||
|     \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% | ||||
|     \hline% | ||||
|     \endhead% | ||||
| }{% | ||||
|     \end{longtabu}% | ||||
|     \vspace{6pt}% | ||||
| } | ||||
| 
 | ||||
| % Used for fields of simple structs | ||||
| \newenvironment{DoxyFields}[1]{% | ||||
|     \tabulinesep=1mm% | ||||
|     \par% | ||||
|     \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}% | ||||
|     \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% | ||||
|     \hline% | ||||
|     \endfirsthead% | ||||
|     \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% | ||||
|     \hline% | ||||
|     \endhead% | ||||
| }{% | ||||
|     \end{longtabu}% | ||||
|     \vspace{6pt}% | ||||
| } | ||||
| 
 | ||||
| % Used for fields simple class style enums | ||||
| \newenvironment{DoxyEnumFields}[1]{% | ||||
|     \tabulinesep=1mm% | ||||
|     \par% | ||||
|     \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% | ||||
|     \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% | ||||
|     \hline% | ||||
|     \endfirsthead% | ||||
|     \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% | ||||
|     \hline% | ||||
|     \endhead% | ||||
| }{% | ||||
|     \end{longtabu}% | ||||
|     \vspace{6pt}% | ||||
| } | ||||
| 
 | ||||
| % Used for parameters within a detailed function description | ||||
| \newenvironment{DoxyParamCaption}{% | ||||
|   \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}%  | ||||
| }{% | ||||
| } | ||||
| 
 | ||||
| % Used by return value lists | ||||
| \newenvironment{DoxyRetVals}[1]{% | ||||
|     \tabulinesep=1mm% | ||||
|     \par% | ||||
|     \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% | ||||
|     \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% | ||||
|     \hline% | ||||
|     \endfirsthead% | ||||
|     \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% | ||||
|     \hline% | ||||
|     \endhead% | ||||
| }{% | ||||
|     \end{longtabu}% | ||||
|     \vspace{6pt}% | ||||
| } | ||||
| 
 | ||||
| % Used by exception lists | ||||
| \newenvironment{DoxyExceptions}[1]{% | ||||
|     \tabulinesep=1mm% | ||||
|     \par% | ||||
|     \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% | ||||
|     \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% | ||||
|     \hline% | ||||
|     \endfirsthead% | ||||
|     \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% | ||||
|     \hline% | ||||
|     \endhead% | ||||
| }{% | ||||
|     \end{longtabu}% | ||||
|     \vspace{6pt}% | ||||
| } | ||||
| 
 | ||||
| % Used by template parameter lists | ||||
| \newenvironment{DoxyTemplParams}[1]{% | ||||
|     \tabulinesep=1mm% | ||||
|     \par% | ||||
|     \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% | ||||
|     \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% | ||||
|     \hline% | ||||
|     \endfirsthead% | ||||
|     \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% | ||||
|     \hline% | ||||
|     \endhead% | ||||
| }{% | ||||
|     \end{longtabu}% | ||||
|     \vspace{6pt}% | ||||
| } | ||||
| 
 | ||||
| % Used for member lists | ||||
| \newenvironment{DoxyCompactItemize}{% | ||||
|   \begin{itemize}% | ||||
|     \setlength{\itemsep}{-3pt}% | ||||
|     \setlength{\parsep}{0pt}% | ||||
|     \setlength{\topsep}{0pt}% | ||||
|     \setlength{\partopsep}{0pt}% | ||||
| }{% | ||||
|   \end{itemize}% | ||||
| } | ||||
| 
 | ||||
| % Used for member descriptions | ||||
| \newenvironment{DoxyCompactList}{% | ||||
|   \begin{list}{}{% | ||||
|     \setlength{\leftmargin}{0.5cm}% | ||||
|     \setlength{\itemsep}{0pt}% | ||||
|     \setlength{\parsep}{0pt}% | ||||
|     \setlength{\topsep}{0pt}% | ||||
|     \renewcommand{\makelabel}{\hfill}% | ||||
|   }% | ||||
| }{% | ||||
|   \end{list}% | ||||
| } | ||||
| 
 | ||||
| % Used for reference lists (@bug, @deprecated, @todo, etc.) | ||||
| \newenvironment{DoxyRefList}{% | ||||
|   \begin{list}{}{% | ||||
|     \setlength{\labelwidth}{10pt}% | ||||
|     \setlength{\leftmargin}{\labelwidth}% | ||||
|     \addtolength{\leftmargin}{\labelsep}% | ||||
|     \renewcommand{\makelabel}{\xreflabel}% | ||||
|   }% | ||||
| }{% | ||||
|   \end{list}% | ||||
| } | ||||
| 
 | ||||
| % Used by @bug, @deprecated, @todo, etc. | ||||
| \newenvironment{DoxyRefDesc}[1]{% | ||||
|   \begin{list}{}{% | ||||
|     \renewcommand\makelabel[1]{\textbf{##1}}% | ||||
|     \settowidth\labelwidth{\makelabel{#1}}% | ||||
|     \setlength\leftmargin{\labelwidth+\labelsep}% | ||||
|   }% | ||||
| }{% | ||||
|   \end{list}% | ||||
| } | ||||
| 
 | ||||
| % Used by parameter lists and simple sections | ||||
| \newenvironment{Desc} | ||||
| {\begin{list}{}{% | ||||
|     \settowidth{\labelwidth}{20pt}% | ||||
|     \setlength{\parsep}{0pt}% | ||||
|     \setlength{\itemsep}{0pt}% | ||||
|     \setlength{\leftmargin}{\labelwidth+\labelsep}% | ||||
|     \renewcommand{\makelabel}{\entrylabel}% | ||||
|   } | ||||
| }{% | ||||
|   \end{list}% | ||||
| } | ||||
| 
 | ||||
| % Used by tables | ||||
| \newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% | ||||
| \newenvironment{TabularC}[1]% | ||||
| {\tabulinesep=1mm | ||||
| \begin{longtabu} spread 0pt [c]{*#1{|X[-1]}|}}% | ||||
| {\end{longtabu}\par}% | ||||
| 
 | ||||
| \newenvironment{TabularNC}[1]% | ||||
| {\begin{tabu} spread 0pt [l]{*#1{|X[-1]}|}}% | ||||
| {\end{tabu}\par}% | ||||
| 
 | ||||
| % Used for member group headers | ||||
| \newenvironment{Indent}{% | ||||
|   \begin{list}{}{% | ||||
|     \setlength{\leftmargin}{0.5cm}% | ||||
|   }% | ||||
|   \item[]\ignorespaces% | ||||
| }{% | ||||
|   \unskip% | ||||
|   \end{list}% | ||||
| } | ||||
| 
 | ||||
| % Used when hyperlinks are turned off | ||||
| \newcommand{\doxyref}[3]{% | ||||
|   \textbf{#1} (\textnormal{#2}\,\pageref{#3})% | ||||
| } | ||||
| 
 | ||||
| % Used to link to a table when hyperlinks are turned on | ||||
| \newcommand{\doxytablelink}[2]{% | ||||
|   \ref{#1}% | ||||
| } | ||||
| 
 | ||||
| % Used to link to a table when hyperlinks are turned off | ||||
| \newcommand{\doxytableref}[3]{% | ||||
|   \ref{#3}% | ||||
| } | ||||
| 
 | ||||
| % Used by @addindex | ||||
| \newcommand{\lcurly}{\{} | ||||
| \newcommand{\rcurly}{\}} | ||||
| 
 | ||||
| % Colors used for syntax highlighting | ||||
| \definecolor{comment}{rgb}{0.5,0.0,0.0} | ||||
| \definecolor{keyword}{rgb}{0.0,0.5,0.0} | ||||
| \definecolor{keywordtype}{rgb}{0.38,0.25,0.125} | ||||
| \definecolor{keywordflow}{rgb}{0.88,0.5,0.0} | ||||
| \definecolor{preprocessor}{rgb}{0.5,0.38,0.125} | ||||
| \definecolor{stringliteral}{rgb}{0.0,0.125,0.25} | ||||
| \definecolor{charliteral}{rgb}{0.0,0.5,0.5} | ||||
| \definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} | ||||
| \definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} | ||||
| \definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} | ||||
| \definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} | ||||
| 
 | ||||
| % Color used for table heading | ||||
| \newcommand{\tableheadbgcolor}{lightgray}% | ||||
| 
 | ||||
| % Version of hypertarget with correct landing location | ||||
| \newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}} | ||||
| 
 | ||||
| % Define caption that is also suitable in a table | ||||
| \makeatletter | ||||
| \def\doxyfigcaption{% | ||||
| \refstepcounter{figure}% | ||||
| \@dblarg{\@caption{figure}}} | ||||
| \makeatother | ||||
							
								
								
									
										151
									
								
								docs/latex/latex/refman.tex
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,151 @@ | ||||
| \documentclass[twoside]{book} | ||||
| 
 | ||||
| % Packages required by doxygen | ||||
| \usepackage{fixltx2e} | ||||
| \usepackage{calc} | ||||
| \usepackage{doxygen} | ||||
| \usepackage[export]{adjustbox} % also loads graphicx | ||||
| \usepackage{graphicx} | ||||
| \usepackage[utf8]{inputenc} | ||||
| \usepackage{makeidx} | ||||
| \usepackage{multicol} | ||||
| \usepackage{multirow} | ||||
| \PassOptionsToPackage{warn}{textcomp} | ||||
| \usepackage{textcomp} | ||||
| \usepackage[nointegrals]{wasysym} | ||||
| \usepackage[table]{xcolor} | ||||
| 
 | ||||
| % Font selection | ||||
| \usepackage[T1]{fontenc} | ||||
| \usepackage[scaled=.90]{helvet} | ||||
| \usepackage{courier} | ||||
| \usepackage{amssymb} | ||||
| \usepackage{sectsty} | ||||
| \renewcommand{\familydefault}{\sfdefault} | ||||
| \allsectionsfont{% | ||||
|   \fontseries{bc}\selectfont% | ||||
|   \color{darkgray}% | ||||
| } | ||||
| \renewcommand{\DoxyLabelFont}{% | ||||
|   \fontseries{bc}\selectfont% | ||||
|   \color{darkgray}% | ||||
| } | ||||
| \newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} | ||||
| 
 | ||||
| % Page & text layout | ||||
| \usepackage{geometry} | ||||
| \geometry{% | ||||
|   a4paper,% | ||||
|   top=2.5cm,% | ||||
|   bottom=2.5cm,% | ||||
|   left=2.5cm,% | ||||
|   right=2.5cm% | ||||
| } | ||||
| \tolerance=750 | ||||
| \hfuzz=15pt | ||||
| \hbadness=750 | ||||
| \setlength{\emergencystretch}{15pt} | ||||
| \setlength{\parindent}{0cm} | ||||
| \setlength{\parskip}{3ex plus 2ex minus 2ex} | ||||
| \makeatletter | ||||
| \renewcommand{\paragraph}{% | ||||
|   \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% | ||||
|     \normalfont\normalsize\bfseries\SS@parafont% | ||||
|   }% | ||||
| } | ||||
| \renewcommand{\subparagraph}{% | ||||
|   \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% | ||||
|     \normalfont\normalsize\bfseries\SS@subparafont% | ||||
|   }% | ||||
| } | ||||
| \makeatother | ||||
| 
 | ||||
| % Headers & footers | ||||
| \usepackage{fancyhdr} | ||||
| \pagestyle{fancyplain} | ||||
| \fancyhead[LE]{\fancyplain{}{\bfseries\thepage}} | ||||
| \fancyhead[CE]{\fancyplain{}{}} | ||||
| \fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}} | ||||
| \fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}} | ||||
| \fancyhead[CO]{\fancyplain{}{}} | ||||
| \fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} | ||||
| \fancyfoot[LE]{\fancyplain{}{}} | ||||
| \fancyfoot[CE]{\fancyplain{}{}} | ||||
| \fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} | ||||
| \fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} | ||||
| \fancyfoot[CO]{\fancyplain{}{}} | ||||
| \fancyfoot[RO]{\fancyplain{}{}} | ||||
| \renewcommand{\footrulewidth}{0.4pt} | ||||
| \renewcommand{\chaptermark}[1]{% | ||||
|   \markboth{#1}{}% | ||||
| } | ||||
| \renewcommand{\sectionmark}[1]{% | ||||
|   \markright{\thesection\ #1}% | ||||
| } | ||||
| 
 | ||||
| % Indices & bibliography | ||||
| \usepackage{natbib} | ||||
| \usepackage[titles]{tocloft} | ||||
| \setcounter{tocdepth}{3} | ||||
| \setcounter{secnumdepth}{5} | ||||
| \makeindex | ||||
| 
 | ||||
| % Hyperlinks (required, but should be loaded last) | ||||
| \usepackage{ifpdf} | ||||
| \ifpdf | ||||
|   \usepackage[pdftex,pagebackref=true]{hyperref} | ||||
| \else | ||||
|   \usepackage[ps2pdf,pagebackref=true]{hyperref} | ||||
| \fi | ||||
| \hypersetup{% | ||||
|   colorlinks=true,% | ||||
|   linkcolor=blue,% | ||||
|   citecolor=blue,% | ||||
|   unicode% | ||||
| } | ||||
| 
 | ||||
| % Custom commands | ||||
| \newcommand{\clearemptydoublepage}{% | ||||
|   \newpage{\pagestyle{empty}\cleardoublepage}% | ||||
| } | ||||
| 
 | ||||
| \usepackage{caption} | ||||
| \captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} | ||||
| 
 | ||||
| %===== C O N T E N T S ===== | ||||
| 
 | ||||
| \begin{document} | ||||
| 
 | ||||
| % Titlepage & ToC | ||||
| \hypersetup{pageanchor=false, | ||||
|              bookmarksnumbered=true, | ||||
|              pdfencoding=unicode | ||||
|             } | ||||
| \pagenumbering{alph} | ||||
| \begin{titlepage} | ||||
| \vspace*{7cm} | ||||
| \begin{center}% | ||||
| {\Large My Project }\\ | ||||
| \vspace*{1cm} | ||||
| {\large Generated by Doxygen 1.8.13}\\ | ||||
| \end{center} | ||||
| \end{titlepage} | ||||
| \clearemptydoublepage | ||||
| \pagenumbering{roman} | ||||
| \tableofcontents | ||||
| \clearemptydoublepage | ||||
| \pagenumbering{arabic} | ||||
| \hypersetup{pageanchor=true} | ||||
| 
 | ||||
| %--- Begin generated contents --- | ||||
| %--- End generated contents --- | ||||
| 
 | ||||
| % Index | ||||
| \backmatter | ||||
| \newpage | ||||
| \phantomsection | ||||
| \clearemptydoublepage | ||||
| \addcontentsline{toc}{chapter}{Index} | ||||
| \printindex | ||||
| 
 | ||||
| \end{document} | ||||
| @ -14,293 +14,9 @@ | ||||
| \fi} | ||||
| \global\let\hyper@last\relax  | ||||
| \gdef\HyperFirstAtBeginDocument#1{#1} | ||||
| \providecommand\HyField@AuxAddToFields[1]{} | ||||
| \providecommand\HyField@AuxAddToCoFields[2]{} | ||||
| \providecommand*\HyPL@Entry[1]{} | ||||
| \HyPL@Entry{0<</S/a>>} | ||||
| \providecommand \oddpage@label [2]{} | ||||
| \@writefile{toc}{\contentsline {chapter}{\numberline {1}Hierarchical Index}{1}{chapter.1}} | ||||
| \@writefile{lof}{\addvspace {10\p@ }} | ||||
| \@writefile{lot}{\addvspace {10\p@ }} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {1.1}Class Hierarchy}{1}{section.1.1}} | ||||
| \@writefile{toc}{\contentsline {chapter}{\numberline {2}Class Index}{3}{chapter.2}} | ||||
| \@writefile{lof}{\addvspace {10\p@ }} | ||||
| \@writefile{lot}{\addvspace {10\p@ }} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {2.1}Class List}{3}{section.2.1}} | ||||
| \@writefile{toc}{\contentsline {chapter}{\numberline {3}Class Documentation}{5}{chapter.3}} | ||||
| \@writefile{lof}{\addvspace {10\p@ }} | ||||
| \@writefile{lot}{\addvspace {10\p@ }} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.1}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Account Class Reference}{5}{section.3.1}} | ||||
| \newlabel{class_b_m_a_account}{{3.1}{5}{B\+M\+A\+Account Class Reference}{section.3.1}{}} | ||||
| \newlabel{class_b_m_a_account_acdcaaf6a9fedf15d6ee90c2d1f9d2a97}{{3.1}{6}{Public Member Functions}{section*.4}{}} | ||||
| \newlabel{class_b_m_a_account_a7062aa89e22f1b11ae30a79091166381}{{3.1}{6}{Public Member Functions}{section*.4}{}} | ||||
| \newlabel{class_b_m_a_account_af83294d09c8b84373e98962f7bd4ab7e}{{3.1}{6}{Public Member Functions}{section*.4}{}} | ||||
| \newlabel{class_b_m_a_account_a31ee9351a201acb7925d8c38553756d2}{{3.1}{6}{Public Member Functions}{section*.4}{}} | ||||
| \newlabel{class_b_m_a_account_ab7b9ba2663dcf94219ea2ceb1a8828a2}{{3.1}{6}{Public Attributes}{section*.5}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.2}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Authenticate Class Reference}{6}{section.3.2}} | ||||
| \newlabel{class_b_m_a_authenticate}{{3.2}{6}{B\+M\+A\+Authenticate Class Reference}{section.3.2}{}} | ||||
| \newlabel{class_b_m_a_authenticate_a2acd6bf9aea96a672168dae0c5bd50f1}{{3.2}{7}{Public Member Functions}{section*.8}{}} | ||||
| \newlabel{class_b_m_a_authenticate_a755008a6a07bd70bafc47d6407a8605a}{{3.2}{7}{Public Member Functions}{section*.8}{}} | ||||
| \newlabel{class_b_m_a_authenticate_ae7ebe776ce594736a04798027c99c7c4}{{3.2}{7}{Public Member Functions}{section*.8}{}} | ||||
| \newlabel{class_b_m_a_authenticate_aa69fdaed4e769f5b1d9aff3da54eaa79}{{3.2}{7}{Public Member Functions}{section*.8}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.3}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Command Class Reference}{7}{section.3.3}} | ||||
| \newlabel{class_b_m_a_command}{{3.3}{7}{B\+M\+A\+Command Class Reference}{section.3.3}{}} | ||||
| \newlabel{class_b_m_a_command_a99873e43fd8b067ed358fdea9269518a}{{3.3}{8}{Public Member Functions}{section*.12}{}} | ||||
| \newlabel{class_b_m_a_command_ac99309bf4f9c1a98eda85b17c7160ee4}{{3.3}{8}{Public Member Functions}{section*.12}{}} | ||||
| \newlabel{class_b_m_a_command_a919e1d8451d9b145aa2ae81b51070736}{{3.3}{8}{Public Attributes}{section*.13}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.4}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Console\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Server Class Reference}{8}{section.3.4}} | ||||
| \newlabel{class_b_m_a_console_server}{{3.4}{8}{B\+M\+A\+Console\+Server Class Reference}{section.3.4}{}} | ||||
| \newlabel{class_b_m_a_console_server_ac9fc1d451b766c81f1c4f1bd805f320c}{{3.4}{9}{Public Member Functions}{section*.16}{}} | ||||
| \newlabel{class_b_m_a_console_server_a6affcd7bd92d12973e66cbc0b8ec2827}{{3.4}{9}{Public Member Functions}{section*.16}{}} | ||||
| \newlabel{class_b_m_a_console_server_a587d9606f601e2bf1f1ab835b706284d}{{3.4}{9}{Public Member Functions}{section*.16}{}} | ||||
| \newlabel{class_b_m_a_console_server_a97d97798a1e1b034ab3d80e17d78c3dc}{{3.4}{9}{Public Member Functions}{section*.16}{}} | ||||
| \newlabel{class_b_m_a_console_server_a7a4f30ac15fbe7ffa91cf010dfa4f123}{{3.4}{9}{Public Attributes}{section*.17}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.5}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Console\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Session Class Reference}{10}{section.3.5}} | ||||
| \newlabel{class_b_m_a_console_session}{{3.5}{10}{B\+M\+A\+Console\+Session Class Reference}{section.3.5}{}} | ||||
| \newlabel{class_b_m_a_console_session_a8733cc143a3b2eefc2cf8e057d024d1f}{{3.5}{11}{Public Member Functions}{section*.21}{}} | ||||
| \newlabel{class_b_m_a_console_session_a87369ca5cf534c3c1736cd197933b0d9}{{3.5}{11}{Protected Member Functions}{section*.22}{}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.5.1}Detailed Description}{11}{subsection.3.5.1}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.5.2}Member Function Documentation}{11}{subsection.3.5.2}} | ||||
| \newlabel{class_b_m_a_console_session_a38fee4b41375c4c14b4be42fd0a23669}{{3.5.2}{11}{Member Function Documentation}{subsection.3.5.2}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.5.2.1}output()}{12}{subsubsection.3.5.2.1}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.6}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}E\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Poll Class Reference}{12}{section.3.6}} | ||||
| \newlabel{class_b_m_a_e_poll}{{3.6}{12}{B\+M\+A\+E\+Poll Class Reference}{section.3.6}{}} | ||||
| \newlabel{class_b_m_a_e_poll_af47f8a2e6b6945ac0cd9b507d085759b}{{3.6}{13}{Public Member Functions}{section*.26}{}} | ||||
| \newlabel{class_b_m_a_e_poll_a86db128e32aceb4203258900dce9cb9f}{{3.6}{13}{Public Member Functions}{section*.26}{}} | ||||
| \newlabel{class_b_m_a_e_poll_a0cb441876d88e2d483eca02958836649}{{3.6}{13}{Public Member Functions}{section*.26}{}} | ||||
| \newlabel{class_b_m_a_e_poll_ad2feb77e1283f3245c516b585bd7ce42}{{3.6}{13}{Public Member Functions}{section*.26}{}} | ||||
| \newlabel{class_b_m_a_e_poll_ae740718bff5544929664b35dd89ac69f}{{3.6}{13}{Public Member Functions}{section*.26}{}} | ||||
| \newlabel{class_b_m_a_e_poll_ad95e44649fb029c8bbdccfa952109fe8}{{3.6}{13}{Public Attributes}{section*.27}{}} | ||||
| \newlabel{class_b_m_a_e_poll_a07e83e4b9fdad9550c7b383b0ee2d437}{{3.6}{13}{Public Attributes}{section*.27}{}} | ||||
| \newlabel{class_b_m_a_e_poll_ac18fcf68c61333d86955dc83443bfefc}{{3.6}{13}{Public Attributes}{section*.27}{}} | ||||
| \gdef \LT@i {\LT@entry  | ||||
|     {3}{38.44968pt}\LT@entry  | ||||
|     {3}{121.63078pt}} | ||||
| \gdef \LT@ii {\LT@entry  | ||||
|     {3}{38.44968pt}\LT@entry  | ||||
|     {3}{131.6386pt}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.6.1}Detailed Description}{14}{subsection.3.6.1}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.6.2}Member Function Documentation}{14}{subsection.3.6.2}} | ||||
| \newlabel{class_b_m_a_e_poll_a3eaabc21ed4f292346b708ebe5e70601}{{3.6.2}{14}{Member Function Documentation}{subsection.3.6.2}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.6.2.1}register\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Socket()}{14}{subsubsection.3.6.2.1}} | ||||
| \newlabel{class_b_m_a_e_poll_a791e51a702810e36f2f4220528ee998d}{{3.6.2.1}{14}{\texorpdfstring {register\+Socket()}{registerSocket()}}{table.3.1}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.6.2.2}unregister\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Socket()}{14}{subsubsection.3.6.2.2}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.7}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}File Class Reference}{15}{section.3.7}} | ||||
| \newlabel{class_b_m_a_file}{{3.7}{15}{B\+M\+A\+File Class Reference}{section.3.7}{}} | ||||
| \newlabel{class_b_m_a_file_a0fc501b25aa5802620e0a00872fd5a09}{{3.7}{15}{Public Member Functions}{section*.29}{}} | ||||
| \newlabel{class_b_m_a_file_a638a2fdf9e90aecc90d20028203f9094}{{3.7}{15}{Public Member Functions}{section*.29}{}} | ||||
| \newlabel{class_b_m_a_file_a0f5fe9196f887e465997b87f3ad45efc}{{3.7}{15}{Public Member Functions}{section*.29}{}} | ||||
| \newlabel{class_b_m_a_file_ab15e09e076166c5bb514a2cadd6b9dbf}{{3.7}{15}{Public Attributes}{section*.30}{}} | ||||
| \newlabel{class_b_m_a_file_ae57b53f5e14e9bd0a5082946e53c292e}{{3.7}{15}{Public Attributes}{section*.30}{}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.7.1}Detailed Description}{15}{subsection.3.7.1}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.8}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Header Class Reference}{16}{section.3.8}} | ||||
| \newlabel{class_b_m_a_header}{{3.8}{16}{B\+M\+A\+Header Class Reference}{section.3.8}{}} | ||||
| \newlabel{class_b_m_a_header_af1855cf4b98690190e94bef81ca2c1a9}{{3.8}{16}{Public Member Functions}{section*.33}{}} | ||||
| \newlabel{class_b_m_a_header_aa09b5818984a2cace6c888c110118781}{{3.8}{16}{Public Member Functions}{section*.33}{}} | ||||
| \newlabel{class_b_m_a_header_a17b7c2981a73f2da91d2dc9afb89b75c}{{3.8}{16}{Public Member Functions}{section*.33}{}} | ||||
| \newlabel{class_b_m_a_header_a34056833977a78115dc8eec4a0821419}{{3.8}{16}{Public Attributes}{section*.34}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.9}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}H\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Request\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Handler Class Reference}{17}{section.3.9}} | ||||
| \newlabel{class_b_m_a_h_t_t_p_request_handler}{{3.9}{17}{B\+M\+A\+H\+T\+T\+P\+Request\+Handler Class Reference}{section.3.9}{}} | ||||
| \newlabel{class_b_m_a_h_t_t_p_request_handler_a66aab795b5ad8dbad0c93037a6154b8b}{{3.9}{17}{Public Member Functions}{section*.37}{}} | ||||
| \newlabel{class_b_m_a_h_t_t_p_request_handler_a11a7dd0c9ac073b3df06bf289af930ec}{{3.9}{17}{Public Member Functions}{section*.37}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.10}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}H\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Server Class Reference}{18}{section.3.10}} | ||||
| \newlabel{class_b_m_a_h_t_t_p_server}{{3.10}{18}{B\+M\+A\+H\+T\+T\+P\+Server Class Reference}{section.3.10}{}} | ||||
| \newlabel{class_b_m_a_h_t_t_p_server_a3c87f61bd95e6b6b7063767107be888f}{{3.10}{19}{Public Member Functions}{section*.41}{}} | ||||
| \newlabel{class_b_m_a_h_t_t_p_server_af96543117f0ac993e6739671b0fd2cce}{{3.10}{19}{Public Member Functions}{section*.41}{}} | ||||
| \newlabel{class_b_m_a_h_t_t_p_server_a52503f63c721e256c215f365c248c684}{{3.10}{19}{Public Member Functions}{section*.41}{}} | ||||
| \newlabel{class_b_m_a_h_t_t_p_server_a97d50eaf2bbfdc82df19a13233e986b8}{{3.10}{19}{Public Member Functions}{section*.41}{}} | ||||
| \newlabel{class_b_m_a_h_t_t_p_server_a9769e9ff4c6dc4b662f1332daa0801d0}{{3.10}{19}{Public Attributes}{section*.42}{}} | ||||
| \newlabel{class_b_m_a_h_t_t_p_server_a0131e030bf8ee9850059e33f4d160a88}{{3.10}{19}{Protected Member Functions}{section*.43}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.11}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}H\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Session Class Reference}{20}{section.3.11}} | ||||
| \newlabel{class_b_m_a_h_t_t_p_session}{{3.11}{20}{B\+M\+A\+H\+T\+T\+P\+Session Class Reference}{section.3.11}{}} | ||||
| \newlabel{class_b_m_a_h_t_t_p_session_ae8fc4ff1379c124378f0aa3306733582}{{3.11}{21}{Public Member Functions}{section*.47}{}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.11.1}Member Function Documentation}{21}{subsection.3.11.1}} | ||||
| \newlabel{class_b_m_a_h_t_t_p_session_a286e62fb76240b2c1c9dd95aa055bdc1}{{3.11.1}{21}{Member Function Documentation}{subsection.3.11.1}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.11.1.1}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Received()}{22}{subsubsection.3.11.1.1}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.12}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Log Class Reference}{22}{section.3.12}} | ||||
| \newlabel{class_b_m_a_log}{{3.12}{22}{B\+M\+A\+Log Class Reference}{section.3.12}{}} | ||||
| \newlabel{class_b_m_a_log_af5e7c9307853910db81bda2bd6beb648}{{3.12}{22}{Public Member Functions}{section*.50}{}} | ||||
| \newlabel{class_b_m_a_log_a4585462cb35053b43fe4408627758bb2}{{3.12}{22}{Public Member Functions}{section*.50}{}} | ||||
| \newlabel{class_b_m_a_log_a15390b2f11c86acd18adf54265933c68}{{3.12}{22}{Protected Attributes}{section*.51}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.13}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}P3\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}File Class Reference}{22}{section.3.13}} | ||||
| \newlabel{class_b_m_a_m_p3_file}{{3.13}{22}{B\+M\+A\+M\+P3\+File Class Reference}{section.3.13}{}} | ||||
| \newlabel{class_b_m_a_m_p3_file_af3ef02c8a1c57d5050979b69e5c81527}{{3.13}{23}{Public Member Functions}{section*.54}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.14}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}P3\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Stream\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Content\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Provider Class Reference}{23}{section.3.14}} | ||||
| \newlabel{class_b_m_a_m_p3_stream_content_provider}{{3.14}{23}{B\+M\+A\+M\+P3\+Stream\+Content\+Provider Class Reference}{section.3.14}{}} | ||||
| \newlabel{class_b_m_a_m_p3_stream_content_provider_afc7ad357bbf07a8099a0ff7982b05b05}{{3.14}{24}{Public Member Functions}{section*.58}{}} | ||||
| \newlabel{class_b_m_a_m_p3_stream_content_provider_ac2d0a4c0f53f539b350a14d716dbba05}{{3.14}{24}{Public Member Functions}{section*.58}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.15}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}P3\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Stream\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Frame Class Reference}{24}{section.3.15}} | ||||
| \newlabel{class_b_m_a_m_p3_stream_frame}{{3.15}{24}{B\+M\+A\+M\+P3\+Stream\+Frame Class Reference}{section.3.15}{}} | ||||
| \newlabel{class_b_m_a_m_p3_stream_frame_a5b11e66e8391b33310c1883a7fc8dca6}{{3.15}{25}{Public Member Functions}{section*.62}{}} | ||||
| \newlabel{class_b_m_a_m_p3_stream_frame_afd7a44b65e7c4d14a5ae292bd2c6e6b1}{{3.15}{25}{Public Member Functions}{section*.62}{}} | ||||
| \newlabel{class_b_m_a_m_p3_stream_frame_a05f80355dbaaaff53b78d6a6235f0a22}{{3.15}{25}{Public Member Functions}{section*.62}{}} | ||||
| \newlabel{class_b_m_a_m_p3_stream_frame_a25078af894af1cee647bbf95d4027180}{{3.15}{25}{Public Member Functions}{section*.62}{}} | ||||
| \newlabel{class_b_m_a_m_p3_stream_frame_a6c4e0c1861ac3b4e6e3c7205b871d010}{{3.15}{25}{Public Member Functions}{section*.62}{}} | ||||
| \newlabel{class_b_m_a_m_p3_stream_frame_ae635c402b39b4f055f557a6cfecdbe85}{{3.15}{25}{Public Member Functions}{section*.62}{}} | ||||
| \newlabel{class_b_m_a_m_p3_stream_frame_a23dd3cf1289f0a7ed4c9745754f1baed}{{3.15}{25}{Public Member Functions}{section*.62}{}} | ||||
| \newlabel{class_b_m_a_m_p3_stream_frame_a3e45284a7c806f41e0229d121b63b274}{{3.15}{25}{Public Member Functions}{section*.62}{}} | ||||
| \newlabel{class_b_m_a_m_p3_stream_frame_a0570cfb188709b1eeab2a4f2af68aae4}{{3.15}{25}{Public Member Functions}{section*.62}{}} | ||||
| \newlabel{class_b_m_a_m_p3_stream_frame_af75f5b80a34ea8f7e76527014d93d0c9}{{3.15}{25}{Protected Attributes}{section*.63}{}} | ||||
| \newlabel{class_b_m_a_m_p3_stream_frame_a4c570bcdc77665c207d84d1ed046abbf}{{3.15}{25}{Protected Attributes}{section*.63}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.16}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Object Class Reference}{26}{section.3.16}} | ||||
| \newlabel{class_b_m_a_object}{{3.16}{26}{B\+M\+A\+Object Class Reference}{section.3.16}{}} | ||||
| \newlabel{class_b_m_a_object_aedf39fba0d2dda8c3d9048746c1b8957}{{3.16}{26}{Public Attributes}{section*.66}{}} | ||||
| \newlabel{class_b_m_a_object_acc0e38c2263588ba9ff1792b17d64f6e}{{3.16}{26}{Public Attributes}{section*.66}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.17}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Parse\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Header Class Reference}{26}{section.3.17}} | ||||
| \newlabel{class_b_m_a_parse_header}{{3.17}{26}{B\+M\+A\+Parse\+Header Class Reference}{section.3.17}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.18}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Property$<$ T $>$ Class Template Reference}{26}{section.3.18}} | ||||
| \newlabel{class_b_m_a_property}{{3.18}{26}{B\+M\+A\+Property$<$ T $>$ Class Template Reference}{section.3.18}{}} | ||||
| \newlabel{class_b_m_a_property_ace93e2bf5d7e9931213019bb8e3a10e7}{{3.18}{26}{Public Member Functions}{section*.67}{}} | ||||
| \newlabel{class_b_m_a_property_aee5ee1d866a247257b243b1ad3c7fa52}{{3.18}{26}{Public Member Functions}{section*.67}{}} | ||||
| \newlabel{class_b_m_a_property_abf0982ca4a88c38d3b61b52661dc50f0}{{3.18}{27}{Protected Attributes}{section*.68}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.19}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Session Class Reference}{27}{section.3.19}} | ||||
| \newlabel{class_b_m_a_session}{{3.19}{27}{B\+M\+A\+Session Class Reference}{section.3.19}{}} | ||||
| \newlabel{class_b_m_a_session_a21391b7697a52fe8adca0b124d91260d}{{3.19}{28}{Public Member Functions}{section*.71}{}} | ||||
| \newlabel{class_b_m_a_session_a3a63e1fb3a64bc4922654aa0d8462364}{{3.19}{28}{Public Attributes}{section*.72}{}} | ||||
| \newlabel{class_b_m_a_session_a258007030bcebbf172f38b028063773a}{{3.19}{28}{Public Attributes}{section*.72}{}} | ||||
| \newlabel{class_b_m_a_session_a790eff4b5d8bf2870c00547131c2fc1a}{{3.19}{28}{Protected Member Functions}{section*.73}{}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.19.1}Detailed Description}{28}{subsection.3.19.1}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.19.2}Member Function Documentation}{28}{subsection.3.19.2}} | ||||
| \newlabel{class_b_m_a_session_a0d382f77e98c53e966119c2563cbfef5}{{3.19.2}{28}{Member Function Documentation}{subsection.3.19.2}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.19.2.1}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Connected()}{28}{subsubsection.3.19.2.1}} | ||||
| \newlabel{class_b_m_a_session_a5813c378c254e9ec2c516ffd15e334e6}{{3.19.2.1}{28}{\texorpdfstring {on\+Connected()}{onConnected()}}{subsubsection.3.19.2.1}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.19.2.2}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Received()}{29}{subsubsection.3.19.2.2}} | ||||
| \newlabel{class_b_m_a_session_a9400cb2731b687d6717dcefda749a31c}{{3.19.2.2}{29}{\texorpdfstring {on\+Data\+Received()}{onDataReceived()}}{subsubsection.3.19.2.2}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.19.2.3}output()}{29}{subsubsection.3.19.2.3}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.20}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}S\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}N\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}V\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}TE Class Reference}{29}{section.3.20}} | ||||
| \newlabel{class_b_m_a_s_i_p_i_n_v_i_t_e}{{3.20}{29}{B\+M\+A\+S\+I\+P\+I\+N\+V\+I\+TE Class Reference}{section.3.20}{}} | ||||
| \newlabel{class_b_m_a_s_i_p_i_n_v_i_t_e_a336c75edbb990afc5f7c23a9e9526ab6}{{3.20}{30}{Public Member Functions}{section*.77}{}} | ||||
| \newlabel{class_b_m_a_s_i_p_i_n_v_i_t_e_afddfa168dc18d636cd77fb6347ceb9f0}{{3.20}{30}{Public Member Functions}{section*.77}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.21}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}S\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}R\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}E\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}G\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}S\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}ER Class Reference}{30}{section.3.21}} | ||||
| \newlabel{class_b_m_a_s_i_p_r_e_g_i_s_t_e_r}{{3.21}{30}{B\+M\+A\+S\+I\+P\+R\+E\+G\+I\+S\+T\+ER Class Reference}{section.3.21}{}} | ||||
| \newlabel{class_b_m_a_s_i_p_r_e_g_i_s_t_e_r_ad47b3f2be59334c8c3dc25ba11c1425f}{{3.21}{31}{Public Member Functions}{section*.81}{}} | ||||
| \newlabel{class_b_m_a_s_i_p_r_e_g_i_s_t_e_r_a996ec80f279fcebf8101280928cb4593}{{3.21}{31}{Public Member Functions}{section*.81}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.22}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}S\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Request\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Handler Class Reference}{31}{section.3.22}} | ||||
| \newlabel{class_b_m_a_s_i_p_request_handler}{{3.22}{31}{B\+M\+A\+S\+I\+P\+Request\+Handler Class Reference}{section.3.22}{}} | ||||
| \newlabel{class_b_m_a_s_i_p_request_handler_af1c7197ea97c4bd03a9d96fc544111d5}{{3.22}{32}{Public Member Functions}{section*.85}{}} | ||||
| \newlabel{class_b_m_a_s_i_p_request_handler_a52f44d394c70dafa17a2ef19974703de}{{3.22}{32}{Public Member Functions}{section*.85}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.23}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}S\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Server Class Reference}{33}{section.3.23}} | ||||
| \newlabel{class_b_m_a_s_i_p_server}{{3.23}{33}{B\+M\+A\+S\+I\+P\+Server Class Reference}{section.3.23}{}} | ||||
| \newlabel{class_b_m_a_s_i_p_server_ae196b9426443d3d155fc15eca55efb72}{{3.23}{34}{Public Member Functions}{section*.89}{}} | ||||
| \newlabel{class_b_m_a_s_i_p_server_a5a137ffb4a5e6465ed56bfbea3d31529}{{3.23}{34}{Public Member Functions}{section*.89}{}} | ||||
| \newlabel{class_b_m_a_s_i_p_server_a89024135ffa80f3423e5623ae0720728}{{3.23}{34}{Public Member Functions}{section*.89}{}} | ||||
| \newlabel{class_b_m_a_s_i_p_server_a5279cc6f08b3d8b87ec3ca5c2345cabd}{{3.23}{34}{Public Member Functions}{section*.89}{}} | ||||
| \newlabel{class_b_m_a_s_i_p_server_a6b19c46961b603bcad6b268761d0e2ed}{{3.23}{34}{Protected Member Functions}{section*.90}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.24}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}S\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Session Class Reference}{35}{section.3.24}} | ||||
| \newlabel{class_b_m_a_s_i_p_session}{{3.24}{35}{B\+M\+A\+S\+I\+P\+Session Class Reference}{section.3.24}{}} | ||||
| \newlabel{class_b_m_a_s_i_p_session_a5c81150e2d965d70c25d84c95734b0a7}{{3.24}{36}{Public Member Functions}{section*.94}{}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.24.1}Member Function Documentation}{36}{subsection.3.24.1}} | ||||
| \newlabel{class_b_m_a_s_i_p_session_a7eda33cab36e5794744819673f1d9d47}{{3.24.1}{36}{Member Function Documentation}{subsection.3.24.1}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.24.1.1}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Received()}{37}{subsubsection.3.24.1.1}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.25}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Socket Class Reference}{37}{section.3.25}} | ||||
| \newlabel{class_b_m_a_socket}{{3.25}{37}{B\+M\+A\+Socket Class Reference}{section.3.25}{}} | ||||
| \newlabel{class_b_m_a_socket_adb2a05588a86a3f8b595ecd8e12b1c51}{{3.25}{38}{Public Member Functions}{section*.99}{}} | ||||
| \newlabel{class_b_m_a_socket_a67e45d5eeeb26964e3509d58abe7762a}{{3.25}{38}{Public Member Functions}{section*.99}{}} | ||||
| \newlabel{class_b_m_a_socket_aaf06616205d8bc97d305d77c94996cb0}{{3.25}{38}{Public Member Functions}{section*.99}{}} | ||||
| \newlabel{class_b_m_a_socket_a525cbedfa4b3f62e81f34734a69110ab}{{3.25}{38}{Public Member Functions}{section*.99}{}} | ||||
| \newlabel{class_b_m_a_socket_ace059125ad6036f1d628169afdc3c891}{{3.25}{38}{Public Member Functions}{section*.99}{}} | ||||
| \newlabel{class_b_m_a_socket_a2f9f17ca8819f2b1b11bf5b09ff2bb37}{{3.25}{38}{Public Attributes}{section*.100}{}} | ||||
| \newlabel{class_b_m_a_socket_a0ab8695ad43d7c0a7999673ea023fda4}{{3.25}{38}{Protected Member Functions}{section*.101}{}} | ||||
| \newlabel{class_b_m_a_socket_a6a8f431adc915983ad25bd25523d40dd}{{3.25}{39}{Protected Attributes}{section*.102}{}} | ||||
| \newlabel{class_b_m_a_socket_acfd4416961ce5ad1f25d0a0f35a574d2}{{3.25}{39}{Protected Attributes}{section*.102}{}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.25.1}Constructor \& Destructor Documentation}{39}{subsection.3.25.1}} | ||||
| \newlabel{class_b_m_a_socket_ae07ca3bf2bdf294e256f4fd1a3cff896}{{3.25.1}{39}{Constructor \& Destructor Documentation}{subsection.3.25.1}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.25.1.1}$\sim $\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Socket()}{39}{subsubsection.3.25.1.1}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.25.2}Member Function Documentation}{39}{subsection.3.25.2}} | ||||
| \newlabel{class_b_m_a_socket_ac1e63c2e54aff72c18cadc5f3bc9001f}{{3.25.2}{39}{Member Function Documentation}{subsection.3.25.2}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.25.2.1}event\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Received()}{39}{subsubsection.3.25.2.1}} | ||||
| \newlabel{class_b_m_a_socket_ac2206da05ab857ec64c5d4addb04a4bf}{{3.25.2.1}{39}{\texorpdfstring {event\+Received()}{eventReceived()}}{subsubsection.3.25.2.1}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.25.2.2}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Connected()}{39}{subsubsection.3.25.2.2}} | ||||
| \newlabel{class_b_m_a_socket_a06c18fd08fa4b32d4e436425c64262ff}{{3.25.2.2}{39}{\texorpdfstring {on\+Connected()}{onConnected()}}{subsubsection.3.25.2.2}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.25.2.3}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Received()}{40}{subsubsection.3.25.2.3}} | ||||
| \newlabel{class_b_m_a_socket_acde955606cbe6ded534a08dff158796d}{{3.25.2.3}{40}{\texorpdfstring {on\+Data\+Received()}{onDataReceived()}}{subsubsection.3.25.2.3}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.25.2.4}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Registered()}{40}{subsubsection.3.25.2.4}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.26}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Stream\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Content\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Provider Class Reference}{40}{section.3.26}} | ||||
| \newlabel{class_b_m_a_stream_content_provider}{{3.26}{40}{B\+M\+A\+Stream\+Content\+Provider Class Reference}{section.3.26}{}} | ||||
| \newlabel{class_b_m_a_stream_content_provider_a591402a921437be32b4c5212a370529d}{{3.26}{40}{Public Member Functions}{section*.104}{}} | ||||
| \newlabel{class_b_m_a_stream_content_provider_aad23c59e622ce1adcf17444648d517ad}{{3.26}{40}{Public Member Functions}{section*.104}{}} | ||||
| \newlabel{class_b_m_a_stream_content_provider_aa883b991dcb2b8876deb45f47c9804d4}{{3.26}{40}{Public Member Functions}{section*.104}{}} | ||||
| \newlabel{class_b_m_a_stream_content_provider_a1ade88dfec2372bdd3733dd99669a3a6}{{3.26}{41}{Public Attributes}{section*.105}{}} | ||||
| \newlabel{class_b_m_a_stream_content_provider_a79befceb5147af3910ae1bc57db8b934}{{3.26}{41}{Public Attributes}{section*.105}{}} | ||||
| \newlabel{class_b_m_a_stream_content_provider_aec7f301261d2ed2915aa082c65165657}{{3.26}{41}{Public Attributes}{section*.105}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.27}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Stream\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Frame Class Reference}{41}{section.3.27}} | ||||
| \newlabel{class_b_m_a_stream_frame}{{3.27}{41}{B\+M\+A\+Stream\+Frame Class Reference}{section.3.27}{}} | ||||
| \newlabel{class_b_m_a_stream_frame_a7f5a4fd691993ef0ba72b8d176df0da1}{{3.27}{41}{Public Member Functions}{section*.107}{}} | ||||
| \newlabel{class_b_m_a_stream_frame_a137a0bc0232b1988e1592b5eb7edad2d}{{3.27}{41}{Public Member Functions}{section*.107}{}} | ||||
| \newlabel{class_b_m_a_stream_frame_a9028c15407e7c86bbd513610c5d1d37d}{{3.27}{41}{Public Member Functions}{section*.107}{}} | ||||
| \newlabel{class_b_m_a_stream_frame_a42767d408575fb59a37f398d867f51a7}{{3.27}{41}{Public Attributes}{section*.108}{}} | ||||
| \newlabel{class_b_m_a_stream_frame_a2f790b9f525141edec746b18843a2169}{{3.27}{41}{Public Attributes}{section*.108}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.28}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Stream\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Server Class Reference}{42}{section.3.28}} | ||||
| \newlabel{class_b_m_a_stream_server}{{3.28}{42}{B\+M\+A\+Stream\+Server Class Reference}{section.3.28}{}} | ||||
| \newlabel{class_b_m_a_stream_server_a53088bc75ca8a77ace2045f88dc5daec}{{3.28}{43}{Public Member Functions}{section*.111}{}} | ||||
| \newlabel{class_b_m_a_stream_server_ac6cdba284f178898a73c928ea7d32dac}{{3.28}{43}{Public Member Functions}{section*.111}{}} | ||||
| \newlabel{class_b_m_a_stream_server_a1359cfb8a98edc68a0eea88e9c8e94ca}{{3.28}{43}{Public Member Functions}{section*.111}{}} | ||||
| \newlabel{class_b_m_a_stream_server_a91e16f2a0e42e6875c7746f1d344619e}{{3.28}{43}{Public Member Functions}{section*.111}{}} | ||||
| \newlabel{class_b_m_a_stream_server_a49786d83fb2231f4f26d01ee515707dd}{{3.28}{43}{Public Member Functions}{section*.111}{}} | ||||
| \newlabel{class_b_m_a_stream_server_a6dc57637a87aa9fc963a1c887277583e}{{3.28}{43}{Public Member Functions}{section*.111}{}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.28.1}Detailed Description}{43}{subsection.3.28.1}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.29}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Stream\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Session Class Reference}{44}{section.3.29}} | ||||
| \newlabel{class_b_m_a_stream_session}{{3.29}{44}{B\+M\+A\+Stream\+Session Class Reference}{section.3.29}{}} | ||||
| \newlabel{class_b_m_a_stream_session_a2d9cbb3811f5ffc816cd8d1f7aa945c5}{{3.29}{45}{Public Member Functions}{section*.115}{}} | ||||
| \newlabel{class_b_m_a_stream_session_a5bee25cf2cc4412e553fa5ff482e2d09}{{3.29}{45}{Public Member Functions}{section*.115}{}} | ||||
| \newlabel{class_b_m_a_stream_session_a18e858e8be7d175f0be6b78e7a2d176f}{{3.29}{45}{Protected Member Functions}{section*.116}{}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.29.1}Member Function Documentation}{45}{subsection.3.29.1}} | ||||
| \newlabel{class_b_m_a_stream_session_a3cdbd3fec1e12da366bcb31de15274e9}{{3.29.1}{45}{Member Function Documentation}{subsection.3.29.1}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.29.1.1}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Received()}{46}{subsubsection.3.29.1.1}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.30}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}C\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Server\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Socket Class Reference}{46}{section.3.30}} | ||||
| \newlabel{class_b_m_a_t_c_p_server_socket}{{3.30}{46}{B\+M\+A\+T\+C\+P\+Server\+Socket Class Reference}{section.3.30}{}} | ||||
| \newlabel{class_b_m_a_t_c_p_server_socket_a48e6fa160a86accb51f81724c3af51fd}{{3.30}{47}{Public Member Functions}{section*.120}{}} | ||||
| \newlabel{class_b_m_a_t_c_p_server_socket_a4784820c3098af2d9debde61a417c82d}{{3.30}{47}{Protected Member Functions}{section*.121}{}} | ||||
| \newlabel{class_b_m_a_t_c_p_server_socket_a9004558c1152d4f8662531970250defc}{{3.30}{47}{Protected Member Functions}{section*.121}{}} | ||||
| \newlabel{class_b_m_a_t_c_p_server_socket_a8719aeb1b87b9f0d7e0b38aa28ab9a35}{{3.30}{47}{Protected Attributes}{section*.122}{}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.30.1}Detailed Description}{47}{subsection.3.30.1}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.30.2}Member Function Documentation}{48}{subsection.3.30.2}} | ||||
| \newlabel{class_b_m_a_t_c_p_server_socket_a3ef3f70a0ffeaf1c56e74b22a2337959}{{3.30.2}{48}{Member Function Documentation}{subsection.3.30.2}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.30.2.1}accept()}{48}{subsubsection.3.30.2.1}} | ||||
| \newlabel{class_b_m_a_t_c_p_server_socket_a0f70ff512174afe7be50b523234d45df}{{3.30.2.1}{48}{\texorpdfstring {accept()}{accept()}}{subsubsection.3.30.2.1}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.30.2.2}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Received()}{48}{subsubsection.3.30.2.2}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.31}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}C\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Socket Class Reference}{48}{section.3.31}} | ||||
| \newlabel{class_b_m_a_t_c_p_socket}{{3.31}{48}{B\+M\+A\+T\+C\+P\+Socket Class Reference}{section.3.31}{}} | ||||
| \newlabel{class_b_m_a_t_c_p_socket_a3e553a95ec29cb931c828b750f6ab524}{{3.31}{49}{Public Member Functions}{section*.126}{}} | ||||
| \newlabel{class_b_m_a_t_c_p_socket_abf6b5c7be1ed054bf40994b94e1da67b}{{3.31}{49}{Public Member Functions}{section*.126}{}} | ||||
| \newlabel{class_b_m_a_t_c_p_socket_ad730b3ef80d884a2490f0e07f783ef2d}{{3.31}{49}{Public Member Functions}{section*.126}{}} | ||||
| \newlabel{class_b_m_a_t_c_p_socket_a50761b35bd02d8785240c5e3be3ceb07}{{3.31}{49}{Public Member Functions}{section*.126}{}} | ||||
| \newlabel{class_b_m_a_t_c_p_socket_a637e5fe1fffa09f6cc89e2b3389e731e}{{3.31}{49}{Public Attributes}{section*.127}{}} | ||||
| \newlabel{class_b_m_a_t_c_p_socket_afc155f5a4961f54c77ed92acd852488a}{{3.31}{49}{Public Attributes}{section*.127}{}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.31.1}Detailed Description}{49}{subsection.3.31.1}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.31.2}Member Function Documentation}{50}{subsection.3.31.2}} | ||||
| \newlabel{class_b_m_a_t_c_p_socket_a0acd8f2fd367a5f3a42027979a0dc14b}{{3.31.2}{50}{Member Function Documentation}{subsection.3.31.2}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.31.2.1}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Connected()}{50}{subsubsection.3.31.2.1}} | ||||
| \newlabel{class_b_m_a_t_c_p_socket_a017112b916d42b9e86b39da747c364c1}{{3.31.2.1}{50}{\texorpdfstring {on\+Connected()}{onConnected()}}{subsubsection.3.31.2.1}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.31.2.2}output()}{50}{subsubsection.3.31.2.2}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.32}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Thread Class Reference}{50}{section.3.32}} | ||||
| \newlabel{class_b_m_a_thread}{{3.32}{50}{B\+M\+A\+Thread Class Reference}{section.3.32}{}} | ||||
| \newlabel{class_b_m_a_thread_aa7e0a54fa8b787d94dc7ed8f7f320ba6}{{3.32}{50}{Public Member Functions}{section*.129}{}} | ||||
| \newlabel{class_b_m_a_thread_a71945ff6553b22563f2140f8eafc2413}{{3.32}{50}{Public Member Functions}{section*.129}{}} | ||||
| \newlabel{class_b_m_a_thread_a3b2d129bf06d98080b618099b901057d}{{3.32}{50}{Public Member Functions}{section*.129}{}} | ||||
| \newlabel{class_b_m_a_thread_ae1136fec7fc4fa071ea51d4b5422ab4f}{{3.32}{50}{Public Member Functions}{section*.129}{}} | ||||
| \newlabel{class_b_m_a_thread_a3c13d1a99e7cfe8d1466fabd2f0133ae}{{3.32}{50}{Public Member Functions}{section*.129}{}} | ||||
| \newlabel{class_b_m_a_thread_ab093e79785c0cf389ec2ea1f39839112}{{3.32}{50}{Public Member Functions}{section*.129}{}} | ||||
| \newlabel{class_b_m_a_thread_aad5d1046c39a26074aa86722db964423}{{3.32}{50}{Public Member Functions}{section*.129}{}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.33}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Timer Class Reference}{51}{section.3.33}} | ||||
| \newlabel{class_b_m_a_timer}{{3.33}{51}{B\+M\+A\+Timer Class Reference}{section.3.33}{}} | ||||
| \newlabel{class_b_m_a_timer_a23b70762f6bca2ec9eee5642cda6e915}{{3.33}{51}{Public Member Functions}{section*.132}{}} | ||||
| \newlabel{class_b_m_a_timer_a52096d26eabfb5a938091d6160705b43}{{3.33}{52}{Public Member Functions}{section*.132}{}} | ||||
| \newlabel{class_b_m_a_timer_acbfec79cd4b7834e35c05cab6ffdf0b1}{{3.33}{52}{Public Member Functions}{section*.132}{}} | ||||
| \newlabel{class_b_m_a_timer_abc80e4ca7b8820ffe50e48e51f625b6b}{{3.33}{52}{Public Member Functions}{section*.132}{}} | ||||
| \newlabel{class_b_m_a_timer_a506c954ebdddc111f87e59717d40edef}{{3.33}{52}{Protected Member Functions}{section*.133}{}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.33.1}Detailed Description}{52}{subsection.3.33.1}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.33.2}Member Function Documentation}{52}{subsection.3.33.2}} | ||||
| \newlabel{class_b_m_a_timer_a64c71fecfafad873712b6f0051de6546}{{3.33.2}{52}{Member Function Documentation}{subsection.3.33.2}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.33.2.1}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Received()}{52}{subsubsection.3.33.2.1}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.34}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}U\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}D\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Server\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Socket Class Reference}{53}{section.3.34}} | ||||
| \newlabel{class_b_m_a_u_d_p_server_socket}{{3.34}{53}{B\+M\+A\+U\+D\+P\+Server\+Socket Class Reference}{section.3.34}{}} | ||||
| \newlabel{class_b_m_a_u_d_p_server_socket_a7f32b0ee1fe9d6b7707f0c7742c5b370}{{3.34}{54}{Public Member Functions}{section*.136}{}} | ||||
| \newlabel{class_b_m_a_u_d_p_server_socket_a3db066aff261a9109fe28d5db137e01c}{{3.34}{54}{Protected Member Functions}{section*.137}{}} | ||||
| \newlabel{class_b_m_a_u_d_p_server_socket_a546c253f0e165daef0dc9f60651a23f7}{{3.34}{54}{Protected Attributes}{section*.138}{}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.34.1}Detailed Description}{54}{subsection.3.34.1}} | ||||
| \@writefile{toc}{\contentsline {subsection}{\numberline {3.34.2}Member Function Documentation}{54}{subsection.3.34.2}} | ||||
| \newlabel{class_b_m_a_u_d_p_server_socket_a9700a1c3fb775596d562f750bd08ebe7}{{3.34.2}{54}{Member Function Documentation}{subsection.3.34.2}{}} | ||||
| \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.34.2.1}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Received()}{54}{subsubsection.3.34.2.1}} | ||||
| \@writefile{toc}{\contentsline {section}{\numberline {3.35}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}U\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}D\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize  {7}{8}\selectfont  $\leftarrow \joinrel  \rhook $}}{}{}Socket Class Reference}{55}{section.3.35}} | ||||
| \newlabel{class_b_m_a_u_d_p_socket}{{3.35}{55}{B\+M\+A\+U\+D\+P\+Socket Class Reference}{section.3.35}{}} | ||||
| \newlabel{class_b_m_a_u_d_p_socket_a1526f880001526ef7c5180b3a2124f38}{{3.35}{55}{Public Member Functions}{section*.142}{}} | ||||
| \@writefile{toc}{\contentsline {chapter}{Index}{57}{section*.144}} | ||||
| \HyPL@Entry{2<</S/r>>} | ||||
| \HyPL@Entry{4<</S/D>>} | ||||
| \@writefile{toc}{\contentsline {chapter}{Index}{1}{section*.2}} | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								docs/latex/refman.dvi
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -1,75 +0,0 @@ | ||||
| \indexentry{B\+M\+A\+Account@{B\+M\+A\+Account}|hyperpage}{5} | ||||
| \indexentry{B\+M\+A\+Authenticate@{B\+M\+A\+Authenticate}|hyperpage}{6} | ||||
| \indexentry{B\+M\+A\+Command@{B\+M\+A\+Command}|hyperpage}{7} | ||||
| \indexentry{B\+M\+A\+Console\+Server@{B\+M\+A\+Console\+Server}|hyperpage}{8} | ||||
| \indexentry{B\+M\+A\+Console\+Session@{B\+M\+A\+Console\+Session}|hyperpage}{10} | ||||
| \indexentry{B\+M\+A\+Console\+Session@{B\+M\+A\+Console\+Session}!output@{output}|hyperpage}{11} | ||||
| \indexentry{output@{output}!B\+M\+A\+Console\+Session@{B\+M\+A\+Console\+Session}|hyperpage}{11} | ||||
| \indexentry{B\+M\+A\+E\+Poll@{B\+M\+A\+E\+Poll}|hyperpage}{12} | ||||
| \indexentry{B\+M\+A\+E\+Poll@{B\+M\+A\+E\+Poll}!register\+Socket@{register\+Socket}|hyperpage}{14} | ||||
| \indexentry{register\+Socket@{register\+Socket}!B\+M\+A\+E\+Poll@{B\+M\+A\+E\+Poll}|hyperpage}{14} | ||||
| \indexentry{B\+M\+A\+E\+Poll@{B\+M\+A\+E\+Poll}!unregister\+Socket@{unregister\+Socket}|hyperpage}{14} | ||||
| \indexentry{unregister\+Socket@{unregister\+Socket}!B\+M\+A\+E\+Poll@{B\+M\+A\+E\+Poll}|hyperpage}{14} | ||||
| \indexentry{B\+M\+A\+File@{B\+M\+A\+File}|hyperpage}{15} | ||||
| \indexentry{B\+M\+A\+Header@{B\+M\+A\+Header}|hyperpage}{16} | ||||
| \indexentry{B\+M\+A\+H\+T\+T\+P\+Request\+Handler@{B\+M\+A\+H\+T\+T\+P\+Request\+Handler}|hyperpage}{17} | ||||
| \indexentry{B\+M\+A\+H\+T\+T\+P\+Server@{B\+M\+A\+H\+T\+T\+P\+Server}|hyperpage}{18} | ||||
| \indexentry{B\+M\+A\+H\+T\+T\+P\+Session@{B\+M\+A\+H\+T\+T\+P\+Session}|hyperpage}{20} | ||||
| \indexentry{B\+M\+A\+H\+T\+T\+P\+Session@{B\+M\+A\+H\+T\+T\+P\+Session}!on\+Data\+Received@{on\+Data\+Received}|hyperpage}{21} | ||||
| \indexentry{on\+Data\+Received@{on\+Data\+Received}!B\+M\+A\+H\+T\+T\+P\+Session@{B\+M\+A\+H\+T\+T\+P\+Session}|hyperpage}{21} | ||||
| \indexentry{B\+M\+A\+Log@{B\+M\+A\+Log}|hyperpage}{22} | ||||
| \indexentry{B\+M\+A\+M\+P3\+File@{B\+M\+A\+M\+P3\+File}|hyperpage}{22} | ||||
| \indexentry{B\+M\+A\+M\+P3\+Stream\+Content\+Provider@{B\+M\+A\+M\+P3\+Stream\+Content\+Provider}|hyperpage}{23} | ||||
| \indexentry{B\+M\+A\+M\+P3\+Stream\+Frame@{B\+M\+A\+M\+P3\+Stream\+Frame}|hyperpage}{24} | ||||
| \indexentry{B\+M\+A\+Object@{B\+M\+A\+Object}|hyperpage}{26} | ||||
| \indexentry{B\+M\+A\+Parse\+Header@{B\+M\+A\+Parse\+Header}|hyperpage}{26} | ||||
| \indexentry{B\+M\+A\+Property$<$ T $>$@{B\+M\+A\+Property$<$ T $>$}|hyperpage}{26} | ||||
| \indexentry{B\+M\+A\+Session@{B\+M\+A\+Session}|hyperpage}{27} | ||||
| \indexentry{B\+M\+A\+Session@{B\+M\+A\+Session}!on\+Connected@{on\+Connected}|hyperpage}{28} | ||||
| \indexentry{on\+Connected@{on\+Connected}!B\+M\+A\+Session@{B\+M\+A\+Session}|hyperpage}{28} | ||||
| \indexentry{B\+M\+A\+Session@{B\+M\+A\+Session}!on\+Data\+Received@{on\+Data\+Received}|hyperpage}{28} | ||||
| \indexentry{on\+Data\+Received@{on\+Data\+Received}!B\+M\+A\+Session@{B\+M\+A\+Session}|hyperpage}{28} | ||||
| \indexentry{B\+M\+A\+Session@{B\+M\+A\+Session}!output@{output}|hyperpage}{29} | ||||
| \indexentry{output@{output}!B\+M\+A\+Session@{B\+M\+A\+Session}|hyperpage}{29} | ||||
| \indexentry{B\+M\+A\+S\+I\+P\+I\+N\+V\+I\+TE@{B\+M\+A\+S\+I\+P\+I\+N\+V\+I\+TE}|hyperpage}{29} | ||||
| \indexentry{B\+M\+A\+S\+I\+P\+R\+E\+G\+I\+S\+T\+ER@{B\+M\+A\+S\+I\+P\+R\+E\+G\+I\+S\+T\+ER}|hyperpage}{30} | ||||
| \indexentry{B\+M\+A\+S\+I\+P\+Request\+Handler@{B\+M\+A\+S\+I\+P\+Request\+Handler}|hyperpage}{31} | ||||
| \indexentry{B\+M\+A\+S\+I\+P\+Server@{B\+M\+A\+S\+I\+P\+Server}|hyperpage}{33} | ||||
| \indexentry{B\+M\+A\+S\+I\+P\+Session@{B\+M\+A\+S\+I\+P\+Session}|hyperpage}{35} | ||||
| \indexentry{B\+M\+A\+S\+I\+P\+Session@{B\+M\+A\+S\+I\+P\+Session}!on\+Data\+Received@{on\+Data\+Received}|hyperpage}{36} | ||||
| \indexentry{on\+Data\+Received@{on\+Data\+Received}!B\+M\+A\+S\+I\+P\+Session@{B\+M\+A\+S\+I\+P\+Session}|hyperpage}{36} | ||||
| \indexentry{B\+M\+A\+Socket@{B\+M\+A\+Socket}|hyperpage}{37} | ||||
| \indexentry{B\+M\+A\+Socket@{B\+M\+A\+Socket}!````~B\+M\+A\+Socket@{$\sim$\+B\+M\+A\+Socket}|hyperpage}{39} | ||||
| \indexentry{````~B\+M\+A\+Socket@{$\sim$\+B\+M\+A\+Socket}!B\+M\+A\+Socket@{B\+M\+A\+Socket}|hyperpage}{39} | ||||
| \indexentry{B\+M\+A\+Socket@{B\+M\+A\+Socket}!event\+Received@{event\+Received}|hyperpage}{39} | ||||
| \indexentry{event\+Received@{event\+Received}!B\+M\+A\+Socket@{B\+M\+A\+Socket}|hyperpage}{39} | ||||
| \indexentry{B\+M\+A\+Socket@{B\+M\+A\+Socket}!on\+Connected@{on\+Connected}|hyperpage}{39} | ||||
| \indexentry{on\+Connected@{on\+Connected}!B\+M\+A\+Socket@{B\+M\+A\+Socket}|hyperpage}{39} | ||||
| \indexentry{B\+M\+A\+Socket@{B\+M\+A\+Socket}!on\+Data\+Received@{on\+Data\+Received}|hyperpage}{39} | ||||
| \indexentry{on\+Data\+Received@{on\+Data\+Received}!B\+M\+A\+Socket@{B\+M\+A\+Socket}|hyperpage}{39} | ||||
| \indexentry{B\+M\+A\+Socket@{B\+M\+A\+Socket}!on\+Registered@{on\+Registered}|hyperpage}{40} | ||||
| \indexentry{on\+Registered@{on\+Registered}!B\+M\+A\+Socket@{B\+M\+A\+Socket}|hyperpage}{40} | ||||
| \indexentry{B\+M\+A\+Stream\+Content\+Provider@{B\+M\+A\+Stream\+Content\+Provider}|hyperpage}{40} | ||||
| \indexentry{B\+M\+A\+Stream\+Frame@{B\+M\+A\+Stream\+Frame}|hyperpage}{41} | ||||
| \indexentry{B\+M\+A\+Stream\+Server@{B\+M\+A\+Stream\+Server}|hyperpage}{42} | ||||
| \indexentry{B\+M\+A\+Stream\+Session@{B\+M\+A\+Stream\+Session}|hyperpage}{44} | ||||
| \indexentry{B\+M\+A\+Stream\+Session@{B\+M\+A\+Stream\+Session}!on\+Data\+Received@{on\+Data\+Received}|hyperpage}{45} | ||||
| \indexentry{on\+Data\+Received@{on\+Data\+Received}!B\+M\+A\+Stream\+Session@{B\+M\+A\+Stream\+Session}|hyperpage}{45} | ||||
| \indexentry{B\+M\+A\+T\+C\+P\+Server\+Socket@{B\+M\+A\+T\+C\+P\+Server\+Socket}|hyperpage}{46} | ||||
| \indexentry{B\+M\+A\+T\+C\+P\+Server\+Socket@{B\+M\+A\+T\+C\+P\+Server\+Socket}!accept@{accept}|hyperpage}{48} | ||||
| \indexentry{accept@{accept}!B\+M\+A\+T\+C\+P\+Server\+Socket@{B\+M\+A\+T\+C\+P\+Server\+Socket}|hyperpage}{48} | ||||
| \indexentry{B\+M\+A\+T\+C\+P\+Server\+Socket@{B\+M\+A\+T\+C\+P\+Server\+Socket}!on\+Data\+Received@{on\+Data\+Received}|hyperpage}{48} | ||||
| \indexentry{on\+Data\+Received@{on\+Data\+Received}!B\+M\+A\+T\+C\+P\+Server\+Socket@{B\+M\+A\+T\+C\+P\+Server\+Socket}|hyperpage}{48} | ||||
| \indexentry{B\+M\+A\+T\+C\+P\+Socket@{B\+M\+A\+T\+C\+P\+Socket}|hyperpage}{48} | ||||
| \indexentry{B\+M\+A\+T\+C\+P\+Socket@{B\+M\+A\+T\+C\+P\+Socket}!on\+Connected@{on\+Connected}|hyperpage}{50} | ||||
| \indexentry{on\+Connected@{on\+Connected}!B\+M\+A\+T\+C\+P\+Socket@{B\+M\+A\+T\+C\+P\+Socket}|hyperpage}{50} | ||||
| \indexentry{B\+M\+A\+T\+C\+P\+Socket@{B\+M\+A\+T\+C\+P\+Socket}!output@{output}|hyperpage}{50} | ||||
| \indexentry{output@{output}!B\+M\+A\+T\+C\+P\+Socket@{B\+M\+A\+T\+C\+P\+Socket}|hyperpage}{50} | ||||
| \indexentry{B\+M\+A\+Thread@{B\+M\+A\+Thread}|hyperpage}{50} | ||||
| \indexentry{B\+M\+A\+Timer@{B\+M\+A\+Timer}|hyperpage}{51} | ||||
| \indexentry{B\+M\+A\+Timer@{B\+M\+A\+Timer}!on\+Data\+Received@{on\+Data\+Received}|hyperpage}{52} | ||||
| \indexentry{on\+Data\+Received@{on\+Data\+Received}!B\+M\+A\+Timer@{B\+M\+A\+Timer}|hyperpage}{52} | ||||
| \indexentry{B\+M\+A\+U\+D\+P\+Server\+Socket@{B\+M\+A\+U\+D\+P\+Server\+Socket}|hyperpage}{53} | ||||
| \indexentry{B\+M\+A\+U\+D\+P\+Server\+Socket@{B\+M\+A\+U\+D\+P\+Server\+Socket}!on\+Data\+Received@{on\+Data\+Received}|hyperpage}{54} | ||||
| \indexentry{on\+Data\+Received@{on\+Data\+Received}!B\+M\+A\+U\+D\+P\+Server\+Socket@{B\+M\+A\+U\+D\+P\+Server\+Socket}|hyperpage}{54} | ||||
| \indexentry{B\+M\+A\+U\+D\+P\+Socket@{B\+M\+A\+U\+D\+P\+Socket}|hyperpage}{55} | ||||
| @ -1,11 +1,11 @@ | ||||
| This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex 2018.4.10)  19 APR 2018 10:45 | ||||
| This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=latex 2019.5.23)  5 JAN 2020 18:40 | ||||
| entering extended mode | ||||
|  restricted \write18 enabled. | ||||
|  %&-line parsing enabled. | ||||
| **refman | ||||
| **refman.tex | ||||
| (./refman.tex | ||||
| LaTeX2e <2017-04-15> | ||||
| Babel <3.18> and hyphenation patterns for 3 language(s) loaded. | ||||
| Babel <3.18> and hyphenation patterns for 5 language(s) loaded. | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/base/book.cls | ||||
| Document Class: book 2014/09/29 v1.4h Standard LaTeX document class | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/base/bk10.clo | ||||
| @ -83,10 +83,10 @@ Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg | ||||
| File: color.cfg 2016/01/02 v1.6 sample color configuration | ||||
| ) | ||||
| Package xcolor Info: Driver file: pdftex.def on input line 225. | ||||
| Package xcolor Info: Driver file: dvips.def on input line 225. | ||||
| 
 | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def | ||||
| File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/graphics-def/dvips.def | ||||
| File: dvips.def 2017/06/20 v3.1d Graphics/color driver for dvips | ||||
| ) | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/colortbl/colortbl.sty | ||||
| Package: colortbl 2012/02/13 v1.0a Color table columns (DPC) | ||||
| @ -95,7 +95,6 @@ Package: colortbl 2012/02/13 v1.0a Color table columns (DPC) | ||||
| ) | ||||
| \rownum=\count92 | ||||
| Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. | ||||
| Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. | ||||
| Package xcolor Info: Model `RGB' extended on input line 1364. | ||||
| Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. | ||||
| Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. | ||||
| @ -209,7 +208,7 @@ Package: trig 2016/01/03 v1.10 sin cos tan (DPC) | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg | ||||
| File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration | ||||
| ) | ||||
| Package graphics Info: Driver file: pdftex.def on input line 99. | ||||
| Package graphics Info: Driver file: dvips.def on input line 99. | ||||
| ) | ||||
| \Gin@req@height=\dimen125 | ||||
| \Gin@req@width=\dimen126 | ||||
| @ -222,10 +221,10 @@ Package: collectbox 2012/05/17 v0.4b Collect macro arguments as boxes | ||||
| \tc@lly=\dimen128 | ||||
| \tc@urx=\dimen129 | ||||
| \tc@ury=\dimen130 | ||||
| Package trimclip Info: Using driver 'tc-pdftex.def'. | ||||
| Package trimclip Info: Using driver 'tc-dvips.def'. | ||||
| 
 | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/adjustbox/tc-pdftex.def | ||||
| File: tc-pdftex.def 2012/05/13 v1.0 Clipping driver for pdftex | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/adjustbox/tc-dvips.def | ||||
| File: tc-dvips.def 2012/05/13 v1.0 Clipping driver for dvips | ||||
| )) | ||||
| \adjbox@Width=\dimen131 | ||||
| \adjbox@Height=\dimen132 | ||||
| @ -916,7 +915,7 @@ Package: pdftexcmds 2018/01/21 v0.26 Utility functions of pdfTeX for LuaTeX (HO | ||||
| Package pdftexcmds Info: LuaTeX not detected. | ||||
| Package pdftexcmds Info: \pdf@primitive is available. | ||||
| Package pdftexcmds Info: \pdf@ifprimitive is available. | ||||
| Package pdftexcmds Info: \pdfdraftmode found. | ||||
| Package pdftexcmds Info: \pdfdraftmode is ignored in DVI mode. | ||||
| Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO) | ||||
| Package: bigintcalc 2016/05/16 v1.4 Expandable calculations on big integers (HO | ||||
| ) | ||||
| @ -993,14 +992,22 @@ LaTeX Info: Redefining \pageref on input line 6443. | ||||
| \c@Item=\count130 | ||||
| \c@Hfootnote=\count131 | ||||
| ) | ||||
| Package hyperref Info: Driver: hpdftex. | ||||
| Package hyperref Info: Driver: hdvips. | ||||
| 
 | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def | ||||
| File: hpdftex.def 2018/02/06 v6.86b Hyperref driver for pdfTeX | ||||
| \Fld@listcount=\count132 | ||||
| \c@bookmark@seq@number=\count133 | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/hyperref/hdvips.def | ||||
| File: hdvips.def 2018/02/06 v6.86b Hyperref driver for dvips | ||||
| 
 | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/hyperref/pdfmark.def | ||||
| File: pdfmark.def 2018/02/06 v6.86b Hyperref definitions for pdfmark specials | ||||
| \pdf@docset=\toks30 | ||||
| \pdf@box=\box65 | ||||
| \pdf@toks=\toks31 | ||||
| \pdf@defaulttoks=\toks32 | ||||
| \HyField@AnnotCount=\count132 | ||||
| \Fld@listcount=\count133 | ||||
| \c@bookmark@seq@number=\count134 | ||||
| \Hy@SectionHShift=\skip104 | ||||
| ) | ||||
| )) | ||||
| Package hyperref Info: Option `colorlinks' set `true' on input line 105. | ||||
| Package hyperref Info: Option `unicode' set `true' on input line 105. | ||||
| 
 | ||||
| @ -1023,7 +1030,7 @@ Package caption3 Info: TeX engine: e-TeX on input line 67. | ||||
| \caption@parindent=\dimen161 | ||||
| \caption@hangindent=\dimen162 | ||||
| ) | ||||
| \c@ContinuedFloat=\count134 | ||||
| \c@ContinuedFloat=\count135 | ||||
| Package caption Info: float package is loaded. | ||||
| Package caption Info: hyperref package is loaded. | ||||
| Package caption Info: longtable package is loaded. | ||||
| @ -1064,40 +1071,10 @@ File: t1phv.fd 2001/06/04 scalable font definitions for T1/phv. | ||||
| LaTeX Font Info:    Font shape `T1/phv/m/n' will be | ||||
| (Font)              scaled to size 8.99994pt on input line 117. | ||||
| 
 | ||||
| (/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii | ||||
| [Loading MPS to PDF converter (version 2006.09.02).] | ||||
| \scratchcounter=\count135 | ||||
| \scratchdimen=\dimen163 | ||||
| \scratchbox=\box65 | ||||
| \nofMPsegments=\count136 | ||||
| \nofMParguments=\count137 | ||||
| \everyMPshowfont=\toks30 | ||||
| \MPscratchCnt=\count138 | ||||
| \MPscratchDim=\dimen164 | ||||
| \MPnumerator=\count139 | ||||
| \makeMPintoPDFobject=\count140 | ||||
| \everyMPtoPDFconversion=\toks31 | ||||
| ) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty | ||||
| Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf | ||||
| 
 | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty | ||||
| Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO) | ||||
| ) | ||||
| Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 | ||||
| 38. | ||||
| Package grfext Info: Graphics extension search list: | ||||
| (grfext)             [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPE | ||||
| G,.JBIG2,.JB2,.eps] | ||||
| (grfext)             \AppendGraphicsExtensions on input line 456. | ||||
| 
 | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg | ||||
| File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv | ||||
| e | ||||
| )) | ||||
| *geometry* driver: auto-detecting | ||||
| *geometry* detected driver: pdftex | ||||
| *geometry* detected driver: dvips | ||||
| *geometry* verbose mode - [ preamble ] result: | ||||
| * driver: pdftex | ||||
| * driver: dvips | ||||
| * paper: a4paper | ||||
| * layout: <same size as paper> | ||||
| * layoutoffset:(h,v)=(0.0pt,0.0pt) | ||||
| @ -1137,7 +1114,7 @@ Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section | ||||
| (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty | ||||
| Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO) | ||||
| ) | ||||
| \c@section@level=\count141 | ||||
| \c@section@level=\count136 | ||||
| ) | ||||
| LaTeX Info: Redefining \ref on input line 117. | ||||
| LaTeX Info: Redefining \pageref on input line 117. | ||||
| @ -1156,28 +1133,11 @@ Package hyperref Info: Option `unicode' set `true' on input line 123. | ||||
| LaTeX Font Info:    Font shape `T1/phv/m/n' will be | ||||
| (Font)              scaled to size 12.9599pt on input line 128. | ||||
| LaTeX Font Info:    Font shape `T1/phv/m/n' will be | ||||
| (Font)              scaled to size 6.29996pt on input line 128. | ||||
| LaTeX Font Info:    Try loading font information for U+wasy on input line 128. | ||||
| 
 | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/wasysym/uwasy.fd | ||||
| File: uwasy.fd 2003/10/30 v2.0 Wasy-2 symbol font definitions | ||||
| ) | ||||
| LaTeX Font Info:    Try loading font information for U+msa on input line 128. | ||||
| 
 | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd | ||||
| File: umsa.fd 2013/01/14 v3.01 AMS symbols A | ||||
| ) | ||||
| LaTeX Font Info:    Try loading font information for U+msb on input line 128. | ||||
| 
 | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd | ||||
| File: umsb.fd 2013/01/14 v3.01 AMS symbols B | ||||
| ) | ||||
| LaTeX Font Info:    Font shape `T1/phv/m/n' will be | ||||
| (Font)              scaled to size 10.79993pt on input line 130. | ||||
|  [1 | ||||
| 
 | ||||
| 
 | ||||
| {/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2 | ||||
| ] [2 | ||||
| 
 | ||||
| ] | ||||
| LaTeX Font Info:    Font shape `T1/phv/m/n' will be | ||||
| @ -1193,692 +1153,55 @@ LaTeX Font Info:    Font shape `T1/phv/bx/n' in size <10> not available | ||||
| (Font)              Font shape `T1/phv/b/n' tried instead on input line 1. | ||||
| LaTeX Font Info:    Font shape `T1/phv/b/n' will be | ||||
| (Font)              scaled to size 8.99994pt on input line 1. | ||||
|  [1 | ||||
| LaTeX Font Info:    Try loading font information for U+wasy on input line 1. | ||||
| 
 | ||||
| ] | ||||
| LaTeX Font Info:    Font shape `T1/phv/bx/n' in size <7> not available | ||||
| (Font)              Font shape `T1/phv/b/n' tried instead on input line 67. | ||||
| LaTeX Font Info:    Font shape `T1/phv/b/n' will be | ||||
| (Font)              scaled to size 6.29996pt on input line 67. | ||||
|  [2]) | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/wasysym/uwasy.fd | ||||
| File: uwasy.fd 2003/10/30 v2.0 Wasy-2 symbol font definitions | ||||
| ) | ||||
| LaTeX Font Info:    Try loading font information for U+msa on input line 1. | ||||
| 
 | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd | ||||
| File: umsa.fd 2013/01/14 v3.01 AMS symbols A | ||||
| ) | ||||
| LaTeX Font Info:    Try loading font information for U+msb on input line 1. | ||||
| 
 | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd | ||||
| File: umsb.fd 2013/01/14 v3.01 AMS symbols B | ||||
| )) | ||||
| \tf@toc=\write5 | ||||
| \openout5 = `refman.toc'. | ||||
| 
 | ||||
|  [3] [4 | ||||
|  [1 | ||||
| 
 | ||||
| ] [2 | ||||
| 
 | ||||
| ] | ||||
| Package hyperref Info: Option `pageanchor' set `true' on input line 138. | ||||
| 
 | ||||
| Chapter 1. | ||||
| (./refman.ind | ||||
| LaTeX Font Info:    Font shape `T1/phv/m/n' will be | ||||
| (Font)              scaled to size 18.66588pt on input line 141. | ||||
| LaTeX Font Info:    Font shape `T1/phv/bx/n' in size <20.74> not available | ||||
| (Font)              Font shape `T1/phv/b/n' tried instead on input line 141. | ||||
| LaTeX Font Info:    Font shape `T1/phv/b/n' will be | ||||
| (Font)              scaled to size 18.66588pt on input line 141. | ||||
| LaTeX Font Info:    Font shape `T1/phv/bc/n' will be | ||||
| (Font)              scaled to size 18.66588pt on input line 141. | ||||
| (./hierarchy.tex | ||||
| LaTeX Font Info:    Font shape `T1/phv/bx/n' in size <14.4> not available | ||||
| (Font)              Font shape `T1/phv/b/n' tried instead on input line 1. | ||||
| LaTeX Font Info:    Font shape `T1/phv/b/n' will be | ||||
| (Font)              scaled to size 12.9599pt on input line 1. | ||||
| LaTeX Font Info:    Font shape `T1/phv/bc/n' will be | ||||
| (Font)              scaled to size 12.9599pt on input line 1. | ||||
| (Font)              scaled to size 6.29996pt on input line 3. | ||||
|  [1 | ||||
| 
 | ||||
| ]) [2] | ||||
| Chapter 2. | ||||
| (./annotated.tex) [3 | ||||
| 
 | ||||
| ] [4 | ||||
| 
 | ||||
| ] | ||||
| Chapter 3. | ||||
| (./class_b_m_a_account.tex | ||||
| LaTeX Font Info:    Font shape `T1/phv/bc/n' will be | ||||
| (Font)              scaled to size 6.29996pt on input line 1. | ||||
| <class_b_m_a_account__inherit__graph.pdf, id=604, 154.5775pt x 156.585pt> | ||||
| File: class_b_m_a_account__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_account__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_account__inherit__graph.pdf  used on input | ||||
|  line 9. | ||||
| (pdftex.def)             Requested size: 154.0pt x 156.01357pt. | ||||
| <class_b_m_a_account__coll__graph.pdf, id=605, 154.5775pt x 156.585pt> | ||||
| File: class_b_m_a_account__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_account__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_account__coll__graph.pdf  used on input li | ||||
| ne 18. | ||||
| (pdftex.def)             Requested size: 154.0pt x 156.01357pt. | ||||
| LaTeX Font Info:    Font shape `T1/phv/bx/n' in size <12> not available | ||||
| (Font)              Font shape `T1/phv/b/n' tried instead on input line 21. | ||||
| LaTeX Font Info:    Font shape `T1/phv/b/n' will be | ||||
| (Font)              scaled to size 10.79993pt on input line 21. | ||||
| LaTeX Font Info:    Font shape `T1/phv/bc/n' will be | ||||
| (Font)              scaled to size 10.79993pt on input line 21. | ||||
| LaTeX Font Info:    Try loading font information for TS1+phv on input line 24. | ||||
| 
 | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1phv.fd | ||||
| File: ts1phv.fd 2001/06/04 scalable font definitions for TS1/phv. | ||||
| ) | ||||
| LaTeX Font Info:    Font shape `TS1/phv/m/n' will be | ||||
| (Font)              scaled to size 8.99994pt on input line 24. | ||||
|  [5 <./class_b_m_a_account__inherit__graph.pdf> <./class_b_m_a_account__coll__g | ||||
| raph.pdf | ||||
| 
 | ||||
| pdfTeX warning: pdflatex (file ./class_b_m_a_account__coll__graph.pdf): PDF inc | ||||
| lusion: multiple pdfs with page group included in a single page | ||||
| >]) (./class_b_m_a_authenticate.tex | ||||
| <class_b_m_a_authenticate__inherit__graph.pdf, id=626, 173.64874pt x 156.585pt> | ||||
| 
 | ||||
| File: class_b_m_a_authenticate__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_authenticate__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_authenticate__inherit__graph.pdf  used on  | ||||
| input line 9. | ||||
| (pdftex.def)             Requested size: 173.0pt x 156.0064pt. | ||||
| <class_b_m_a_authenticate__coll__graph.pdf, id=627, 173.64874pt x 156.585pt> | ||||
| File: class_b_m_a_authenticate__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_authenticate__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_authenticate__coll__graph.pdf  used on inp | ||||
| ut line 18. | ||||
| (pdftex.def)             Requested size: 173.0pt x 156.0064pt. | ||||
|  [6 <./class_b_m_a_authenticate__inherit__graph.pdf> <./class_b_m_a_authenticat | ||||
| e__coll__graph.pdf | ||||
| 
 | ||||
| pdfTeX warning: pdflatex (file ./class_b_m_a_authenticate__coll__graph.pdf): PD | ||||
| F inclusion: multiple pdfs with page group included in a single page | ||||
| >]) (./class_b_m_a_command.tex | ||||
| <class_b_m_a_command__inherit__graph.pdf, id=653, 513.92pt x 269.005pt> | ||||
| File: class_b_m_a_command__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_command__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_command__inherit__graph.pdf  used on input | ||||
|  line 9. | ||||
| (pdftex.def)             Requested size: 350.0pt x 183.2042pt. | ||||
| <class_b_m_a_command__coll__graph.pdf, id=654, 163.61125pt x 156.585pt> | ||||
| File: class_b_m_a_command__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_command__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_command__coll__graph.pdf  used on input li | ||||
| ne 18. | ||||
| (pdftex.def)             Requested size: 163.0pt x 155.99922pt. | ||||
|  [7 <./class_b_m_a_command__inherit__graph.pdf> <./class_b_m_a_command__coll__g | ||||
| raph.pdf | ||||
| 
 | ||||
| pdfTeX warning: pdflatex (file ./class_b_m_a_command__coll__graph.pdf): PDF inc | ||||
| lusion: multiple pdfs with page group included in a single page | ||||
| >]) (./class_b_m_a_console_server.tex | ||||
| <class_b_m_a_console_server__inherit__graph.pdf, id=680, 271.0125pt x 325.215pt | ||||
| > | ||||
| File: class_b_m_a_console_server__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_console_server__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_console_server__inherit__graph.pdf  used o | ||||
| n input line 9. | ||||
| (pdftex.def)             Requested size: 270.0pt x 324.0133pt. | ||||
| <class_b_m_a_console_server__coll__graph.pdf, id=681, 355.3275pt x 339.2675pt> | ||||
| File: class_b_m_a_console_server__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_console_server__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_console_server__coll__graph.pdf  used on i | ||||
| nput line 18. | ||||
| (pdftex.def)             Requested size: 350.0pt x 334.19339pt. | ||||
|  [8 <./class_b_m_a_console_server__inherit__graph.pdf>] | ||||
| LaTeX Font Info:    Font shape `T1/phv/m/n' will be | ||||
| (Font)              scaled to size 8.09995pt on input line 35. | ||||
| LaTeX Font Info:    Font shape `T1/phv/m/it' in size <9> not available | ||||
| (Font)              Font shape `T1/phv/m/sl' tried instead on input line 35. | ||||
| LaTeX Font Info:    Font shape `T1/phv/m/sl' will be | ||||
| (Font)              scaled to size 8.09995pt on input line 35. | ||||
| ) (./class_b_m_a_console_session.tex | ||||
| LaTeX Font Info:    Try loading font information for T1+pcr on input line 5. | ||||
| 
 | ||||
| (/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1pcr.fd | ||||
| File: t1pcr.fd 2001/06/04 font definitions for T1/pcr. | ||||
| ) | ||||
| <class_b_m_a_console_session__inherit__graph.pdf, id=704, 246.9225pt x 325.215p | ||||
| t> | ||||
| File: class_b_m_a_console_session__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_console_session__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_console_session__inherit__graph.pdf  used  | ||||
| on input line 13. | ||||
| (pdftex.def)             Requested size: 246.0pt x 323.99841pt. | ||||
|  [9 <./class_b_m_a_console_server__coll__graph.pdf>] | ||||
| <class_b_m_a_console_session__coll__graph.pdf, id=725, 399.4925pt x 339.2675pt> | ||||
| 
 | ||||
| File: class_b_m_a_console_session__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_console_session__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_console_session__coll__graph.pdf  used on  | ||||
| input line 22. | ||||
| (pdftex.def)             Requested size: 350.0pt x 297.25175pt. | ||||
| 
 | ||||
| Underfull \vbox (badness 10000) has occurred while \output is active [] | ||||
| 
 | ||||
|  [10 <./class_b_m_a_console_session__inherit__graph.pdf>] | ||||
| LaTeX Font Info:    Font shape `T1/phv/bc/n' will be | ||||
| (Font)              scaled to size 8.99994pt on input line 51. | ||||
| LaTeX Font Info:    Font shape `T1/phv/m/n' will be | ||||
| (Font)              scaled to size 7.19995pt on input line 52. | ||||
| LaTeX Font Info:    Font shape `T1/pcr/m/it' in size <8> not available | ||||
| (Font)              Font shape `T1/pcr/m/sl' tried instead on input line 52. | ||||
|  [11 <./class_b_m_a_console_session__coll__graph.pdf>]) (./class_b_m_a_e_poll.t | ||||
| ex | ||||
| <class_b_m_a_e_poll__inherit__graph.pdf, id=765, 163.61125pt x 212.795pt> | ||||
| File: class_b_m_a_e_poll__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_e_poll__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_e_poll__inherit__graph.pdf  used on input  | ||||
| line 13. | ||||
| (pdftex.def)             Requested size: 163.0pt x 211.99895pt. | ||||
| <class_b_m_a_e_poll__coll__graph.pdf, id=766, 291.0875pt x 292.09125pt> | ||||
| File: class_b_m_a_e_poll__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_e_poll__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_e_poll__coll__graph.pdf  used on input lin | ||||
| e 22. | ||||
| (pdftex.def)             Requested size: 290.0pt x 291.02084pt. | ||||
|  [12 <./class_b_m_a_e_poll__inherit__graph.pdf>] | ||||
| LaTeX Font Info:    Font shape `T1/phv/m/it' in size <7> not available | ||||
| (Font)              Font shape `T1/phv/m/sl' tried instead on input line 30. | ||||
| LaTeX Font Info:    Font shape `T1/phv/m/sl' will be | ||||
| (Font)              scaled to size 6.29996pt on input line 30. | ||||
|  [13 <./class_b_m_a_e_poll__coll__graph.pdf>]) | ||||
| (./class_b_m_a_file.tex [14] | ||||
| <class_b_m_a_file__inherit__graph.pdf, id=847, 154.5775pt x 156.585pt> | ||||
| File: class_b_m_a_file__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_file__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_file__inherit__graph.pdf  used on input li | ||||
| ne 13. | ||||
| (pdftex.def)             Requested size: 154.0pt x 156.01357pt. | ||||
| ) (./class_b_m_a_header.tex | ||||
| <class_b_m_a_header__inherit__graph.pdf, id=849, 150.5625pt x 156.585pt> | ||||
| File: class_b_m_a_header__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_header__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_header__inherit__graph.pdf  used on input  | ||||
| line 9. | ||||
| (pdftex.def)             Requested size: 150.0pt x 156.01357pt. | ||||
|  [15 <./class_b_m_a_file__inherit__graph.pdf>] | ||||
| <class_b_m_a_header__coll__graph.pdf, id=868, 150.5625pt x 156.585pt> | ||||
| File: class_b_m_a_header__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_header__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_header__coll__graph.pdf  used on input lin | ||||
| e 18. | ||||
| (pdftex.def)             Requested size: 150.0pt x 156.01357pt. | ||||
| ) (./class_b_m_a_h_t_t_p_request_handler.tex | ||||
| <class_b_m_a_h_t_t_p_request_handler__inherit__graph.pdf, id=869, 215.80624pt x | ||||
|  156.585pt> | ||||
| File: class_b_m_a_h_t_t_p_request_handler__inherit__graph.pdf Graphic file (typ | ||||
| e pdf) | ||||
| <use class_b_m_a_h_t_t_p_request_handler__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_h_t_t_p_request_handler__inherit__graph.pd | ||||
| f  used on input line 9. | ||||
| (pdftex.def)             Requested size: 215.0pt x 156.004pt. | ||||
|  [16 <./class_b_m_a_header__inherit__graph.pdf> <./class_b_m_a_header__coll__gr | ||||
| aph.pdf | ||||
| 
 | ||||
| pdfTeX warning: pdflatex (file ./class_b_m_a_header__coll__graph.pdf): PDF incl | ||||
| usion: multiple pdfs with page group included in a single page | ||||
| >] | ||||
| <class_b_m_a_h_t_t_p_request_handler__coll__graph.pdf, id=893, 215.80624pt x 15 | ||||
| 6.585pt> | ||||
| File: class_b_m_a_h_t_t_p_request_handler__coll__graph.pdf Graphic file (type p | ||||
| df) | ||||
| <use class_b_m_a_h_t_t_p_request_handler__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_h_t_t_p_request_handler__coll__graph.pdf   | ||||
| used on input line 18. | ||||
| (pdftex.def)             Requested size: 215.0pt x 156.004pt. | ||||
| ) (./class_b_m_a_h_t_t_p_server.tex | ||||
| <class_b_m_a_h_t_t_p_server__inherit__graph.pdf, id=895, 271.0125pt x 325.215pt | ||||
| > | ||||
| File: class_b_m_a_h_t_t_p_server__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_h_t_t_p_server__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_h_t_t_p_server__inherit__graph.pdf  used o | ||||
| n input line 9. | ||||
| (pdftex.def)             Requested size: 270.0pt x 324.0133pt. | ||||
|  [17 <./class_b_m_a_h_t_t_p_request_handler__inherit__graph.pdf> <./class_b_m_a | ||||
| _h_t_t_p_request_handler__coll__graph.pdf | ||||
| 
 | ||||
| pdfTeX warning: pdflatex (file ./class_b_m_a_h_t_t_p_request_handler__coll__gra | ||||
| ph.pdf): PDF inclusion: multiple pdfs with page group included in a single page | ||||
| 
 | ||||
| >] | ||||
| <class_b_m_a_h_t_t_p_server__coll__graph.pdf, id=917, 355.3275pt x 339.2675pt> | ||||
| File: class_b_m_a_h_t_t_p_server__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_h_t_t_p_server__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_h_t_t_p_server__coll__graph.pdf  used on i | ||||
| nput line 18. | ||||
| (pdftex.def)             Requested size: 350.0pt x 334.19339pt. | ||||
| 
 | ||||
| Underfull \vbox (badness 10000) has occurred while \output is active [] | ||||
| 
 | ||||
|  [18 <./class_b_m_a_h_t_t_p_server__inherit__graph.pdf>]) | ||||
| (./class_b_m_a_h_t_t_p_session.tex | ||||
| <class_b_m_a_h_t_t_p_session__inherit__graph.pdf, id=935, 246.9225pt x 325.215p | ||||
| t> | ||||
| File: class_b_m_a_h_t_t_p_session__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_h_t_t_p_session__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_h_t_t_p_session__inherit__graph.pdf  used  | ||||
| on input line 9. | ||||
| (pdftex.def)             Requested size: 246.0pt x 323.99841pt. | ||||
|  [19 <./class_b_m_a_h_t_t_p_server__coll__graph.pdf>] | ||||
| <class_b_m_a_h_t_t_p_session__coll__graph.pdf, id=958, 394.47375pt x 339.2675pt | ||||
| > | ||||
| File: class_b_m_a_h_t_t_p_session__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_h_t_t_p_session__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_h_t_t_p_session__coll__graph.pdf  used on  | ||||
| input line 18. | ||||
| (pdftex.def)             Requested size: 350.0pt x 301.02046pt. | ||||
| 
 | ||||
| Underfull \vbox (badness 10000) has occurred while \output is active [] | ||||
| 
 | ||||
|  [20 <./class_b_m_a_h_t_t_p_session__inherit__graph.pdf>] [21 <./class_b_m_a_h_ | ||||
| t_t_p_session__coll__graph.pdf>]) (./class_b_m_a_log.tex) (./class_b_m_a_m_p3_f | ||||
| ile.tex | ||||
| <class_b_m_a_m_p3_file__inherit__graph.pdf, id=991, 293.095pt x 156.585pt> | ||||
| File: class_b_m_a_m_p3_file__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_m_p3_file__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_m_p3_file__inherit__graph.pdf  used on inp | ||||
| ut line 9. | ||||
| (pdftex.def)             Requested size: 292.0pt x 155.99922pt. | ||||
| <class_b_m_a_m_p3_file__coll__graph.pdf, id=992, 293.095pt x 156.585pt> | ||||
| File: class_b_m_a_m_p3_file__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_m_p3_file__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_m_p3_file__coll__graph.pdf  used on input  | ||||
| line 18. | ||||
| (pdftex.def)             Requested size: 292.0pt x 155.99922pt. | ||||
| 
 | ||||
| [22 <./class_b_m_a_m_p3_file__inherit__graph.pdf>]) | ||||
| (./class_b_m_a_m_p3_stream_content_provider.tex | ||||
| <class_b_m_a_m_p3_stream_content_provider__inherit__graph.pdf, id=1011, 241.903 | ||||
| 75pt x 156.585pt> | ||||
| File: class_b_m_a_m_p3_stream_content_provider__inherit__graph.pdf Graphic file | ||||
|  (type pdf) | ||||
| <use class_b_m_a_m_p3_stream_content_provider__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_m_p3_stream_content_provider__inherit__gra | ||||
| ph.pdf  used on input line 9. | ||||
| (pdftex.def)             Requested size: 241.0pt x 156.0064pt. | ||||
| <class_b_m_a_m_p3_stream_content_provider__coll__graph.pdf, id=1012, 241.90375p | ||||
| t x 156.585pt> | ||||
| File: class_b_m_a_m_p3_stream_content_provider__coll__graph.pdf Graphic file (t | ||||
| ype pdf) | ||||
| <use class_b_m_a_m_p3_stream_content_provider__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_m_p3_stream_content_provider__coll__graph. | ||||
| pdf  used on input line 18. | ||||
| (pdftex.def)             Requested size: 241.0pt x 156.0064pt. | ||||
|  [23 <./class_b_m_a_m_p3_file__coll__graph.pdf> <./class_b_m_a_m_p3_stream_cont | ||||
| ent_provider__inherit__graph.pdf | ||||
| 
 | ||||
| pdfTeX warning: pdflatex (file ./class_b_m_a_m_p3_stream_content_provider__inhe | ||||
| rit__graph.pdf): PDF inclusion: multiple pdfs with page group included in a sin | ||||
| gle page | ||||
| >]) (./class_b_m_a_m_p3_stream_frame.tex | ||||
| <class_b_m_a_m_p3_stream_frame__inherit__graph.pdf, id=1035, 198.7425pt x 156.5 | ||||
| 85pt> | ||||
| File: class_b_m_a_m_p3_stream_frame__inherit__graph.pdf Graphic file (type pdf) | ||||
| 
 | ||||
| <use class_b_m_a_m_p3_stream_frame__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_m_p3_stream_frame__inherit__graph.pdf  use | ||||
| d on input line 9. | ||||
| (pdftex.def)             Requested size: 198.0pt x 156.004pt. | ||||
| <class_b_m_a_m_p3_stream_frame__coll__graph.pdf, id=1036, 198.7425pt x 156.585p | ||||
| t> | ||||
| File: class_b_m_a_m_p3_stream_frame__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_m_p3_stream_frame__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_m_p3_stream_frame__coll__graph.pdf  used o | ||||
| n input line 18. | ||||
| (pdftex.def)             Requested size: 198.0pt x 156.004pt. | ||||
|  [24 <./class_b_m_a_m_p3_stream_content_provider__coll__graph.pdf> <./class_b_m | ||||
| _a_m_p3_stream_frame__inherit__graph.pdf | ||||
| 
 | ||||
| pdfTeX warning: pdflatex (file ./class_b_m_a_m_p3_stream_frame__inherit__graph. | ||||
| pdf): PDF inclusion: multiple pdfs with page group included in a single page | ||||
| >]) (./class_b_m_a_object.tex | ||||
| <class_b_m_a_object__inherit__graph.pdf, id=1058, 764.8575pt x 415.5525pt> | ||||
| File: class_b_m_a_object__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_object__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_object__inherit__graph.pdf  used on input  | ||||
| line 10. | ||||
| (pdftex.def)             Requested size: 350.0pt x 190.15462pt. | ||||
|  [25 <./class_b_m_a_m_p3_stream_frame__coll__graph.pdf>]) (./class_b_m_a_parse_ | ||||
| header.tex) (./class_b_m_a_property.tex | ||||
| 
 | ||||
| Package hyperref Warning: Token not allowed in a PDF string (Unicode): | ||||
| (hyperref)                removing `math shift' on input line 1. | ||||
| 
 | ||||
| 
 | ||||
| Package hyperref Warning: Token not allowed in a PDF string (Unicode): | ||||
| (hyperref)                removing `math shift' on input line 1. | ||||
| 
 | ||||
| 
 | ||||
| Package hyperref Warning: Token not allowed in a PDF string (Unicode): | ||||
| (hyperref)                removing `math shift' on input line 1. | ||||
| 
 | ||||
| 
 | ||||
| Package hyperref Warning: Token not allowed in a PDF string (Unicode): | ||||
| (hyperref)                removing `math shift' on input line 1. | ||||
| 
 | ||||
| ) (./class_b_m_a_session.tex | ||||
| <class_b_m_a_session__inherit__graph.pdf, id=1086, 542.025pt x 325.215pt> | ||||
| File: class_b_m_a_session__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_session__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_session__inherit__graph.pdf  used on input | ||||
|  line 13. | ||||
| (pdftex.def)             Requested size: 350.0pt x 210.0077pt. | ||||
|  [26 <./class_b_m_a_object__inherit__graph.pdf>] | ||||
| <class_b_m_a_session__coll__graph.pdf, id=1105, 388.45125pt x 282.05376pt> | ||||
| File: class_b_m_a_session__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_session__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_session__coll__graph.pdf  used on input li | ||||
| ne 22. | ||||
| (pdftex.def)             Requested size: 350.0pt x 254.13867pt. | ||||
| 
 | ||||
| [27 <./class_b_m_a_session__inherit__graph.pdf> <./class_b_m_a_session__coll__g | ||||
| raph.pdf | ||||
| 
 | ||||
| pdfTeX warning: pdflatex (file ./class_b_m_a_session__coll__graph.pdf): PDF inc | ||||
| lusion: multiple pdfs with page group included in a single page | ||||
| >] [28]) (./class_b_m_a_s_i_p_i_n_v_i_t_e.tex | ||||
| <class_b_m_a_s_i_p_i_n_v_i_t_e__inherit__graph.pdf, id=1156, 205.76875pt x 212. | ||||
| 795pt> | ||||
| File: class_b_m_a_s_i_p_i_n_v_i_t_e__inherit__graph.pdf Graphic file (type pdf) | ||||
| 
 | ||||
| <use class_b_m_a_s_i_p_i_n_v_i_t_e__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_s_i_p_i_n_v_i_t_e__inherit__graph.pdf  use | ||||
| d on input line 10. | ||||
| (pdftex.def)             Requested size: 205.0pt x 212.0022pt. | ||||
| <class_b_m_a_s_i_p_i_n_v_i_t_e__coll__graph.pdf, id=1157, 205.76875pt x 212.795 | ||||
| pt> | ||||
| File: class_b_m_a_s_i_p_i_n_v_i_t_e__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_s_i_p_i_n_v_i_t_e__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_s_i_p_i_n_v_i_t_e__coll__graph.pdf  used o | ||||
| n input line 20. | ||||
| (pdftex.def)             Requested size: 205.0pt x 212.0022pt. | ||||
|  [29 <./class_b_m_a_s_i_p_i_n_v_i_t_e__inherit__graph.pdf>]) (./class_b_m_a_s_i | ||||
| _p_r_e_g_i_s_t_e_r.tex | ||||
| <class_b_m_a_s_i_p_r_e_g_i_s_t_e_r__inherit__graph.pdf, id=1173, 205.76875pt x  | ||||
| 212.795pt> | ||||
| File: class_b_m_a_s_i_p_r_e_g_i_s_t_e_r__inherit__graph.pdf Graphic file (type  | ||||
| pdf) | ||||
| <use class_b_m_a_s_i_p_r_e_g_i_s_t_e_r__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_s_i_p_r_e_g_i_s_t_e_r__inherit__graph.pdf  | ||||
|  used on input line 9. | ||||
| (pdftex.def)             Requested size: 205.0pt x 212.0022pt. | ||||
| <class_b_m_a_s_i_p_r_e_g_i_s_t_e_r__coll__graph.pdf, id=1174, 205.76875pt x 212 | ||||
| .795pt> | ||||
| File: class_b_m_a_s_i_p_r_e_g_i_s_t_e_r__coll__graph.pdf Graphic file (type pdf | ||||
| ) | ||||
| <use class_b_m_a_s_i_p_r_e_g_i_s_t_e_r__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_s_i_p_r_e_g_i_s_t_e_r__coll__graph.pdf  us | ||||
| ed on input line 18. | ||||
| (pdftex.def)             Requested size: 205.0pt x 212.0022pt. | ||||
|  [30 <./class_b_m_a_s_i_p_i_n_v_i_t_e__coll__graph.pdf> <./class_b_m_a_s_i_p_r_ | ||||
| e_g_i_s_t_e_r__inherit__graph.pdf | ||||
| 
 | ||||
| pdfTeX warning: pdflatex (file ./class_b_m_a_s_i_p_r_e_g_i_s_t_e_r__inherit__gr | ||||
| aph.pdf): PDF inclusion: multiple pdfs with page group included in a single pag | ||||
| e | ||||
| >]) (./class_b_m_a_s_i_p_request_handler.tex | ||||
| <class_b_m_a_s_i_p_request_handler__inherit__graph.pdf, id=1198, 294.09875pt x  | ||||
| 212.795pt> | ||||
| File: class_b_m_a_s_i_p_request_handler__inherit__graph.pdf Graphic file (type  | ||||
| pdf) | ||||
| <use class_b_m_a_s_i_p_request_handler__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_s_i_p_request_handler__inherit__graph.pdf  | ||||
|  used on input line 10. | ||||
| (pdftex.def)             Requested size: 293.0pt x 212.0022pt. | ||||
| <class_b_m_a_s_i_p_request_handler__coll__graph.pdf, id=1199, 205.76875pt x 156 | ||||
| .585pt> | ||||
| File: class_b_m_a_s_i_p_request_handler__coll__graph.pdf Graphic file (type pdf | ||||
| ) | ||||
| <use class_b_m_a_s_i_p_request_handler__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_s_i_p_request_handler__coll__graph.pdf  us | ||||
| ed on input line 20. | ||||
| (pdftex.def)             Requested size: 205.0pt x 156.00162pt. | ||||
|  [31 <./class_b_m_a_s_i_p_r_e_g_i_s_t_e_r__coll__graph.pdf> <./class_b_m_a_s_i_ | ||||
| p_request_handler__inherit__graph.pdf | ||||
| 
 | ||||
| pdfTeX warning: pdflatex (file ./class_b_m_a_s_i_p_request_handler__inherit__gr | ||||
| aph.pdf): PDF inclusion: multiple pdfs with page group included in a single pag | ||||
| e | ||||
| >]) (./class_b_m_a_s_i_p_server.tex | ||||
| <class_b_m_a_s_i_p_server__inherit__graph.pdf, id=1223, 271.0125pt x 325.215pt> | ||||
| 
 | ||||
| File: class_b_m_a_s_i_p_server__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_s_i_p_server__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_s_i_p_server__inherit__graph.pdf  used on  | ||||
| input line 9. | ||||
| (pdftex.def)             Requested size: 270.0pt x 324.0133pt. | ||||
| 
 | ||||
| Underfull \vbox (badness 10000) has occurred while \output is active [] | ||||
| 
 | ||||
|  [32 <./class_b_m_a_s_i_p_request_handler__coll__graph.pdf>] | ||||
| <class_b_m_a_s_i_p_server__coll__graph.pdf, id=1239, 355.3275pt x 339.2675pt> | ||||
| File: class_b_m_a_s_i_p_server__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_s_i_p_server__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_s_i_p_server__coll__graph.pdf  used on inp | ||||
| ut line 18. | ||||
| (pdftex.def)             Requested size: 350.0pt x 334.19339pt. | ||||
| 
 | ||||
| Underfull \vbox (badness 10000) has occurred while \output is active [] | ||||
| 
 | ||||
|  [33 <./class_b_m_a_s_i_p_server__inherit__graph.pdf>]) (./class_b_m_a_s_i_p_se | ||||
| ssion.tex | ||||
| <class_b_m_a_s_i_p_session__inherit__graph.pdf, id=1256, 246.9225pt x 325.215pt | ||||
| > | ||||
| File: class_b_m_a_s_i_p_session__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_s_i_p_session__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_s_i_p_session__inherit__graph.pdf  used on | ||||
|  input line 9. | ||||
| (pdftex.def)             Requested size: 246.0pt x 323.99841pt. | ||||
| 
 | ||||
| [34 <./class_b_m_a_s_i_p_server__coll__graph.pdf>] | ||||
| <class_b_m_a_s_i_p_session__coll__graph.pdf, id=1276, 389.455pt x 339.2675pt> | ||||
| File: class_b_m_a_s_i_p_session__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_s_i_p_session__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_s_i_p_session__coll__graph.pdf  used on in | ||||
| put line 18. | ||||
| (pdftex.def)             Requested size: 350.0pt x 304.90825pt. | ||||
| 
 | ||||
| Underfull \vbox (badness 10000) has occurred while \output is active [] | ||||
| 
 | ||||
|  [35 <./class_b_m_a_s_i_p_session__inherit__graph.pdf>] [36 <./class_b_m_a_s_i_ | ||||
| p_session__coll__graph.pdf>]) (./class_b_m_a_socket.tex | ||||
| <class_b_m_a_socket__inherit__graph.pdf, id=1308, 695.59875pt x 395.4775pt> | ||||
| File: class_b_m_a_socket__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_socket__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_socket__inherit__graph.pdf  used on input  | ||||
| line 9. | ||||
| (pdftex.def)             Requested size: 350.0pt x 198.9874pt. | ||||
| <class_b_m_a_socket__coll__graph.pdf, id=1309, 324.21124pt x 224.84pt> | ||||
| File: class_b_m_a_socket__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_socket__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_socket__coll__graph.pdf  used on input lin | ||||
| e 18. | ||||
| (pdftex.def)             Requested size: 323.0pt x 224.01262pt. | ||||
|  [37 <./class_b_m_a_socket__inherit__graph.pdf>] [38 <./class_b_m_a_socket__col | ||||
| l__graph.pdf>] [39]) | ||||
| (./class_b_m_a_stream_content_provider.tex | ||||
| <class_b_m_a_stream_content_provider__inherit__graph.pdf, id=1373, 335.2525pt x | ||||
|  156.585pt> | ||||
| File: class_b_m_a_stream_content_provider__inherit__graph.pdf Graphic file (typ | ||||
| e pdf) | ||||
| <use class_b_m_a_stream_content_provider__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_stream_content_provider__inherit__graph.pd | ||||
| f  used on input line 9. | ||||
| (pdftex.def)             Requested size: 334.0pt x 155.99922pt. | ||||
|  [40 <./class_b_m_a_stream_content_provider__inherit__graph.pdf>]) (./class_b_m | ||||
| _a_stream_frame.tex | ||||
| <class_b_m_a_stream_frame__inherit__graph.pdf, id=1396, 198.7425pt x 156.585pt> | ||||
| 
 | ||||
| File: class_b_m_a_stream_frame__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_stream_frame__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_stream_frame__inherit__graph.pdf  used on  | ||||
| input line 9. | ||||
| (pdftex.def)             Requested size: 198.0pt x 156.004pt. | ||||
| ) | ||||
| (./class_b_m_a_stream_server.tex | ||||
| <class_b_m_a_stream_server__inherit__graph.pdf, id=1397, 331.2375pt x 325.215pt | ||||
| > | ||||
| File: class_b_m_a_stream_server__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_stream_server__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_stream_server__inherit__graph.pdf  used on | ||||
|  input line 13. | ||||
| (pdftex.def)             Requested size: 330.0pt x 324.0133pt. | ||||
|  [41 <./class_b_m_a_stream_frame__inherit__graph.pdf>] | ||||
| <class_b_m_a_stream_server__coll__graph.pdf, id=1420, 454.69875pt x 358.33875pt | ||||
| > | ||||
| File: class_b_m_a_stream_server__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_stream_server__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_stream_server__coll__graph.pdf  used on in | ||||
| put line 22. | ||||
| (pdftex.def)             Requested size: 350.0pt x 275.82874pt. | ||||
| 
 | ||||
| Underfull \vbox (badness 10000) has occurred while \output is active [] | ||||
| 
 | ||||
|  [42 <./class_b_m_a_stream_server__inherit__graph.pdf>]) (./class_b_m_a_stream_ | ||||
| session.tex | ||||
| <class_b_m_a_stream_session__inherit__graph.pdf, id=1437, 246.9225pt x 325.215p | ||||
| t> | ||||
| File: class_b_m_a_stream_session__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_stream_session__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_stream_session__inherit__graph.pdf  used o | ||||
| n input line 9. | ||||
| (pdftex.def)             Requested size: 246.0pt x 323.99841pt. | ||||
| [43 <./class_b_m_a_stream_server__coll__graph.pdf>] | ||||
| <class_b_m_a_stream_session__coll__graph.pdf, id=1458, 396.48125pt x 339.2675pt | ||||
| > | ||||
| File: class_b_m_a_stream_session__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_stream_session__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_stream_session__coll__graph.pdf  used on i | ||||
| nput line 18. | ||||
| (pdftex.def)             Requested size: 350.0pt x 299.49849pt. | ||||
| 
 | ||||
| Underfull \vbox (badness 10000) has occurred while \output is active [] | ||||
| 
 | ||||
|  [44 <./class_b_m_a_stream_session__inherit__graph.pdf>] [45 <./class_b_m_a_str | ||||
| eam_session__coll__graph.pdf>]) (./class_b_m_a_t_c_p_server_socket.tex | ||||
| <class_b_m_a_t_c_p_server_socket__inherit__graph.pdf, id=1492, 513.92pt x 325.2 | ||||
| 15pt> | ||||
| File: class_b_m_a_t_c_p_server_socket__inherit__graph.pdf Graphic file (type pd | ||||
| f) | ||||
| <use class_b_m_a_t_c_p_server_socket__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_t_c_p_server_socket__inherit__graph.pdf  u | ||||
| sed on input line 13. | ||||
| (pdftex.def)             Requested size: 350.0pt x 221.48567pt. | ||||
| <class_b_m_a_t_c_p_server_socket__coll__graph.pdf, id=1493, 355.3275pt x 282.05 | ||||
| 376pt> | ||||
| File: class_b_m_a_t_c_p_server_socket__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_t_c_p_server_socket__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_t_c_p_server_socket__coll__graph.pdf  used | ||||
|  on input line 22. | ||||
| (pdftex.def)             Requested size: 350.0pt x 277.83534pt. | ||||
|  [46 <./class_b_m_a_t_c_p_server_socket__inherit__graph.pdf>] [47 <./class_b_m_ | ||||
| a_t_c_p_server_socket__coll__graph.pdf>]) (./class_b_m_a_t_c_p_socket.tex | ||||
| <class_b_m_a_t_c_p_socket__inherit__graph.pdf, id=1536, 692.5875pt x 367.3725pt | ||||
| > | ||||
| File: class_b_m_a_t_c_p_socket__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_t_c_p_socket__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_t_c_p_socket__inherit__graph.pdf  used on  | ||||
| input line 13. | ||||
| (pdftex.def)             Requested size: 350.0pt x 185.65337pt. | ||||
| <class_b_m_a_t_c_p_socket__coll__graph.pdf, id=1537, 388.45125pt x 224.84pt> | ||||
| File: class_b_m_a_t_c_p_socket__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_t_c_p_socket__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_t_c_p_socket__coll__graph.pdf  used on inp | ||||
| ut line 22. | ||||
| (pdftex.def)             Requested size: 350.0pt x 202.58742pt. | ||||
|  [48 <./class_b_m_a_t_c_p_socket__inherit__graph.pdf>] [49 <./class_b_m_a_t_c_p | ||||
| _socket__coll__graph.pdf>]) (./class_b_m_a_thread.tex) (./class_b_m_a_timer.tex | ||||
| <class_b_m_a_timer__inherit__graph.pdf, id=1584, 246.9225pt x 269.005pt> | ||||
| File: class_b_m_a_timer__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_timer__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_timer__inherit__graph.pdf  used on input l | ||||
| ine 13. | ||||
| (pdftex.def)             Requested size: 246.0pt x 267.99867pt. | ||||
|  [50] | ||||
| <class_b_m_a_timer__coll__graph.pdf, id=1597, 375.4025pt x 224.84pt> | ||||
| File: class_b_m_a_timer__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_timer__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_timer__coll__graph.pdf  used on input line | ||||
|  22. | ||||
| (pdftex.def)             Requested size: 350.0pt x 209.63766pt. | ||||
|  [51 <./class_b_m_a_timer__inherit__graph.pdf> <./class_b_m_a_timer__coll__grap | ||||
| h.pdf | ||||
| 
 | ||||
| pdfTeX warning: pdflatex (file ./class_b_m_a_timer__coll__graph.pdf): PDF inclu | ||||
| sion: multiple pdfs with page group included in a single page | ||||
| >]) (./class_b_m_a_u_d_p_server_socket.tex | ||||
| <class_b_m_a_u_d_p_server_socket__inherit__graph.pdf, id=1624, 273.02pt x 269.0 | ||||
| 05pt> | ||||
| File: class_b_m_a_u_d_p_server_socket__inherit__graph.pdf Graphic file (type pd | ||||
| f) | ||||
| <use class_b_m_a_u_d_p_server_socket__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_u_d_p_server_socket__inherit__graph.pdf  u | ||||
| sed on input line 13. | ||||
| (pdftex.def)             Requested size: 272.0pt x 268.01509pt. | ||||
|  [52] | ||||
| <class_b_m_a_u_d_p_server_socket__coll__graph.pdf, id=1634, 356.33125pt x 282.0 | ||||
| 5376pt> | ||||
| File: class_b_m_a_u_d_p_server_socket__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_u_d_p_server_socket__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_u_d_p_server_socket__coll__graph.pdf  used | ||||
|  on input line 22. | ||||
| (pdftex.def)             Requested size: 350.0pt x 277.05205pt. | ||||
|  [53 <./class_b_m_a_u_d_p_server_socket__inherit__graph.pdf> <./class_b_m_a_u_d | ||||
| _p_server_socket__coll__graph.pdf | ||||
| 
 | ||||
| pdfTeX warning: pdflatex (file ./class_b_m_a_u_d_p_server_socket__coll__graph.p | ||||
| df): PDF inclusion: multiple pdfs with page group included in a single page | ||||
| >]) (./class_b_m_a_u_d_p_socket.tex | ||||
| <class_b_m_a_u_d_p_socket__inherit__graph.pdf, id=1658, 246.9225pt x 269.005pt> | ||||
| 
 | ||||
| File: class_b_m_a_u_d_p_socket__inherit__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_u_d_p_socket__inherit__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_u_d_p_socket__inherit__graph.pdf  used on  | ||||
| input line 9. | ||||
| (pdftex.def)             Requested size: 246.0pt x 267.99867pt. | ||||
|  [54] | ||||
| <class_b_m_a_u_d_p_socket__coll__graph.pdf, id=1670, 389.455pt x 224.84pt> | ||||
| File: class_b_m_a_u_d_p_socket__coll__graph.pdf Graphic file (type pdf) | ||||
| <use class_b_m_a_u_d_p_socket__coll__graph.pdf> | ||||
| Package pdftex.def Info: class_b_m_a_u_d_p_socket__coll__graph.pdf  used on inp | ||||
| ut line 18. | ||||
| (pdftex.def)             Requested size: 350.0pt x 202.06937pt. | ||||
|  [55 <./class_b_m_a_u_d_p_socket__inherit__graph.pdf> <./class_b_m_a_u_d_p_sock | ||||
| et__coll__graph.pdf | ||||
| 
 | ||||
| pdfTeX warning: pdflatex (file ./class_b_m_a_u_d_p_socket__coll__graph.pdf): PD | ||||
| F inclusion: multiple pdfs with page group included in a single page | ||||
| >]) [56] (./refman.ind [57 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ]) | ||||
| Package atveryend Info: Empty hook `BeforeClearDocument' on input line 191. | ||||
| Package atveryend Info: Empty hook `AfterLastShipout' on input line 191. | ||||
| Package atveryend Info: Empty hook `BeforeClearDocument' on input line 151. | ||||
| Package atveryend Info: Empty hook `AfterLastShipout' on input line 151. | ||||
|  (./refman.aux) | ||||
| Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 191. | ||||
| Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 191. | ||||
| Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 151. | ||||
| Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 151. | ||||
| Package rerunfilecheck Info: File `refman.out' has not changed. | ||||
| (rerunfilecheck)             Checksum: 2C849180BC5920A18DC5FFB13575487F;17904. | ||||
| Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 191. | ||||
| (rerunfilecheck)             Checksum: DA7143E9C4104565666D1CA756475EF9;69. | ||||
| Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 151. | ||||
|  )  | ||||
| Here is how much of TeX's memory you used: | ||||
|  15909 strings out of 494923 | ||||
|  251521 string characters out of 6180742 | ||||
|  319588 words of memory out of 5000000 | ||||
|  18369 multiletter control sequences out of 15000+600000 | ||||
|  67105 words of font info for 90 fonts, out of 8000000 for 9000 | ||||
|  14 hyphenation exceptions out of 8191 | ||||
|  53i,16n,92p,1496b,580s stack positions out of 5000i,500n,10000p,200000b,80000s | ||||
| {/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc}</usr/share/texliv | ||||
| e/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/texlive/texm | ||||
| f-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb></usr/share/texlive/texmf-dist | ||||
| /fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/share/texlive/texmf-dist/fonts | ||||
| /type1/public/amsfonts/cm/cmsy8.pfb></usr/share/texlive/texmf-dist/fonts/type1/ | ||||
| urw/courier/ucrr8a.pfb></usr/share/texlive/texmf-dist/fonts/type1/urw/courier/u | ||||
| crro8a.pfb></usr/share/texlive/texmf-dist/fonts/type1/urw/helvetic/uhvb8a.pfb>< | ||||
| /usr/share/texlive/texmf-dist/fonts/type1/urw/helvetic/uhvb8ac.pfb></usr/share/ | ||||
| texlive/texmf-dist/fonts/type1/urw/helvetic/uhvr8a.pfb></usr/share/texlive/texm | ||||
| f-dist/fonts/type1/urw/helvetic/uhvro8a.pfb> | ||||
| Output written on refman.pdf (63 pages, 332551 bytes). | ||||
| PDF statistics: | ||||
|  1915 PDF objects out of 2073 (max. 8388607) | ||||
|  1702 compressed objects within 18 object streams | ||||
|  478 named destinations out of 1000 (max. 500000) | ||||
|  947 words of extra memory for PDF output out of 10000 (max. 10000000) | ||||
|  14229 strings out of 494881 | ||||
|  200893 string characters out of 6179627 | ||||
|  312141 words of memory out of 5000000 | ||||
|  17357 multiletter control sequences out of 15000+600000 | ||||
|  20323 words of font info for 34 fonts, out of 8000000 for 9000 | ||||
|  36 hyphenation exceptions out of 8191 | ||||
|  53i,11n,92p,296b,371s stack positions out of 5000i,500n,10000p,200000b,80000s | ||||
| 
 | ||||
| Output written on refman.dvi (5 pages, 26720 bytes). | ||||
|  | ||||
| @ -1,82 +1 @@ | ||||
| \BOOKMARK [0][-]{chapter.1}{\376\377\0001\000\040\000H\000i\000e\000r\000a\000r\000c\000h\000i\000c\000a\000l\000\040\000I\000n\000d\000e\000x}{}% 1 | ||||
| \BOOKMARK [1][-]{section.1.1}{\376\377\0001\000.\0001\000\040\000C\000l\000a\000s\000s\000\040\000H\000i\000e\000r\000a\000r\000c\000h\000y}{chapter.1}% 2 | ||||
| \BOOKMARK [0][-]{chapter.2}{\376\377\0002\000\040\000C\000l\000a\000s\000s\000\040\000I\000n\000d\000e\000x}{}% 3 | ||||
| \BOOKMARK [1][-]{section.2.1}{\376\377\0002\000.\0001\000\040\000C\000l\000a\000s\000s\000\040\000L\000i\000s\000t}{chapter.2}% 4 | ||||
| \BOOKMARK [0][-]{chapter.3}{\376\377\0003\000\040\000C\000l\000a\000s\000s\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{}% 5 | ||||
| \BOOKMARK [1][-]{section.3.1}{\376\377\0003\000.\0001\000\040\000B\000M\000A\000A\000c\000c\000o\000u\000n\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 6 | ||||
| \BOOKMARK [1][-]{section.3.2}{\376\377\0003\000.\0002\000\040\000B\000M\000A\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 7 | ||||
| \BOOKMARK [1][-]{section.3.3}{\376\377\0003\000.\0003\000\040\000B\000M\000A\000C\000o\000m\000m\000a\000n\000d\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 8 | ||||
| \BOOKMARK [1][-]{section.3.4}{\376\377\0003\000.\0004\000\040\000B\000M\000A\000C\000o\000n\000s\000o\000l\000e\000S\000e\000r\000v\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 9 | ||||
| \BOOKMARK [1][-]{section.3.5}{\376\377\0003\000.\0005\000\040\000B\000M\000A\000C\000o\000n\000s\000o\000l\000e\000S\000e\000s\000s\000i\000o\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 10 | ||||
| \BOOKMARK [2][-]{subsection.3.5.1}{\376\377\0003\000.\0005\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n}{section.3.5}% 11 | ||||
| \BOOKMARK [2][-]{subsection.3.5.2}{\376\377\0003\000.\0005\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.3.5}% 12 | ||||
| \BOOKMARK [3][-]{subsubsection.3.5.2.1}{\376\377\0003\000.\0005\000.\0002\000.\0001\000\040\000o\000u\000t\000p\000u\000t\000\050\000\051}{subsection.3.5.2}% 13 | ||||
| \BOOKMARK [1][-]{section.3.6}{\376\377\0003\000.\0006\000\040\000B\000M\000A\000E\000P\000o\000l\000l\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 14 | ||||
| \BOOKMARK [2][-]{subsection.3.6.1}{\376\377\0003\000.\0006\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n}{section.3.6}% 15 | ||||
| \BOOKMARK [2][-]{subsection.3.6.2}{\376\377\0003\000.\0006\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.3.6}% 16 | ||||
| \BOOKMARK [3][-]{subsubsection.3.6.2.1}{\376\377\0003\000.\0006\000.\0002\000.\0001\000\040\000r\000e\000g\000i\000s\000t\000e\000r\000S\000o\000c\000k\000e\000t\000\050\000\051}{subsection.3.6.2}% 17 | ||||
| \BOOKMARK [3][-]{subsubsection.3.6.2.2}{\376\377\0003\000.\0006\000.\0002\000.\0002\000\040\000u\000n\000r\000e\000g\000i\000s\000t\000e\000r\000S\000o\000c\000k\000e\000t\000\050\000\051}{subsection.3.6.2}% 18 | ||||
| \BOOKMARK [1][-]{section.3.7}{\376\377\0003\000.\0007\000\040\000B\000M\000A\000F\000i\000l\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 19 | ||||
| \BOOKMARK [2][-]{subsection.3.7.1}{\376\377\0003\000.\0007\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n}{section.3.7}% 20 | ||||
| \BOOKMARK [1][-]{section.3.8}{\376\377\0003\000.\0008\000\040\000B\000M\000A\000H\000e\000a\000d\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 21 | ||||
| \BOOKMARK [1][-]{section.3.9}{\376\377\0003\000.\0009\000\040\000B\000M\000A\000H\000T\000T\000P\000R\000e\000q\000u\000e\000s\000t\000H\000a\000n\000d\000l\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 22 | ||||
| \BOOKMARK [1][-]{section.3.10}{\376\377\0003\000.\0001\0000\000\040\000B\000M\000A\000H\000T\000T\000P\000S\000e\000r\000v\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 23 | ||||
| \BOOKMARK [1][-]{section.3.11}{\376\377\0003\000.\0001\0001\000\040\000B\000M\000A\000H\000T\000T\000P\000S\000e\000s\000s\000i\000o\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 24 | ||||
| \BOOKMARK [2][-]{subsection.3.11.1}{\376\377\0003\000.\0001\0001\000.\0001\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.3.11}% 25 | ||||
| \BOOKMARK [3][-]{subsubsection.3.11.1.1}{\376\377\0003\000.\0001\0001\000.\0001\000.\0001\000\040\000o\000n\000D\000a\000t\000a\000R\000e\000c\000e\000i\000v\000e\000d\000\050\000\051}{subsection.3.11.1}% 26 | ||||
| \BOOKMARK [1][-]{section.3.12}{\376\377\0003\000.\0001\0002\000\040\000B\000M\000A\000L\000o\000g\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 27 | ||||
| \BOOKMARK [1][-]{section.3.13}{\376\377\0003\000.\0001\0003\000\040\000B\000M\000A\000M\000P\0003\000F\000i\000l\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 28 | ||||
| \BOOKMARK [1][-]{section.3.14}{\376\377\0003\000.\0001\0004\000\040\000B\000M\000A\000M\000P\0003\000S\000t\000r\000e\000a\000m\000C\000o\000n\000t\000e\000n\000t\000P\000r\000o\000v\000i\000d\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 29 | ||||
| \BOOKMARK [1][-]{section.3.15}{\376\377\0003\000.\0001\0005\000\040\000B\000M\000A\000M\000P\0003\000S\000t\000r\000e\000a\000m\000F\000r\000a\000m\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 30 | ||||
| \BOOKMARK [1][-]{section.3.16}{\376\377\0003\000.\0001\0006\000\040\000B\000M\000A\000O\000b\000j\000e\000c\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 31 | ||||
| \BOOKMARK [1][-]{section.3.17}{\376\377\0003\000.\0001\0007\000\040\000B\000M\000A\000P\000a\000r\000s\000e\000H\000e\000a\000d\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 32 | ||||
| \BOOKMARK [1][-]{section.3.18}{\376\377\0003\000.\0001\0008\000\040\000B\000M\000A\000P\000r\000o\000p\000e\000r\000t\000y\000<\000\040\000T\000\040\000>\000\040\000C\000l\000a\000s\000s\000\040\000T\000e\000m\000p\000l\000a\000t\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 33 | ||||
| \BOOKMARK [1][-]{section.3.19}{\376\377\0003\000.\0001\0009\000\040\000B\000M\000A\000S\000e\000s\000s\000i\000o\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 34 | ||||
| \BOOKMARK [2][-]{subsection.3.19.1}{\376\377\0003\000.\0001\0009\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n}{section.3.19}% 35 | ||||
| \BOOKMARK [2][-]{subsection.3.19.2}{\376\377\0003\000.\0001\0009\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.3.19}% 36 | ||||
| \BOOKMARK [3][-]{subsubsection.3.19.2.1}{\376\377\0003\000.\0001\0009\000.\0002\000.\0001\000\040\000o\000n\000C\000o\000n\000n\000e\000c\000t\000e\000d\000\050\000\051}{subsection.3.19.2}% 37 | ||||
| \BOOKMARK [3][-]{subsubsection.3.19.2.2}{\376\377\0003\000.\0001\0009\000.\0002\000.\0002\000\040\000o\000n\000D\000a\000t\000a\000R\000e\000c\000e\000i\000v\000e\000d\000\050\000\051}{subsection.3.19.2}% 38 | ||||
| \BOOKMARK [3][-]{subsubsection.3.19.2.3}{\376\377\0003\000.\0001\0009\000.\0002\000.\0003\000\040\000o\000u\000t\000p\000u\000t\000\050\000\051}{subsection.3.19.2}% 39 | ||||
| \BOOKMARK [1][-]{section.3.20}{\376\377\0003\000.\0002\0000\000\040\000B\000M\000A\000S\000I\000P\000I\000N\000V\000I\000T\000E\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 40 | ||||
| \BOOKMARK [1][-]{section.3.21}{\376\377\0003\000.\0002\0001\000\040\000B\000M\000A\000S\000I\000P\000R\000E\000G\000I\000S\000T\000E\000R\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 41 | ||||
| \BOOKMARK [1][-]{section.3.22}{\376\377\0003\000.\0002\0002\000\040\000B\000M\000A\000S\000I\000P\000R\000e\000q\000u\000e\000s\000t\000H\000a\000n\000d\000l\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 42 | ||||
| \BOOKMARK [1][-]{section.3.23}{\376\377\0003\000.\0002\0003\000\040\000B\000M\000A\000S\000I\000P\000S\000e\000r\000v\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 43 | ||||
| \BOOKMARK [1][-]{section.3.24}{\376\377\0003\000.\0002\0004\000\040\000B\000M\000A\000S\000I\000P\000S\000e\000s\000s\000i\000o\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 44 | ||||
| \BOOKMARK [2][-]{subsection.3.24.1}{\376\377\0003\000.\0002\0004\000.\0001\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.3.24}% 45 | ||||
| \BOOKMARK [3][-]{subsubsection.3.24.1.1}{\376\377\0003\000.\0002\0004\000.\0001\000.\0001\000\040\000o\000n\000D\000a\000t\000a\000R\000e\000c\000e\000i\000v\000e\000d\000\050\000\051}{subsection.3.24.1}% 46 | ||||
| \BOOKMARK [1][-]{section.3.25}{\376\377\0003\000.\0002\0005\000\040\000B\000M\000A\000S\000o\000c\000k\000e\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 47 | ||||
| \BOOKMARK [2][-]{subsection.3.25.1}{\376\377\0003\000.\0002\0005\000.\0001\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.3.25}% 48 | ||||
| \BOOKMARK [3][-]{subsubsection.3.25.1.1}{\376\377\0003\000.\0002\0005\000.\0001\000.\0001\000\040\000\040\000B\000M\000A\000S\000o\000c\000k\000e\000t\000\050\000\051}{subsection.3.25.1}% 49 | ||||
| \BOOKMARK [2][-]{subsection.3.25.2}{\376\377\0003\000.\0002\0005\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.3.25}% 50 | ||||
| \BOOKMARK [3][-]{subsubsection.3.25.2.1}{\376\377\0003\000.\0002\0005\000.\0002\000.\0001\000\040\000e\000v\000e\000n\000t\000R\000e\000c\000e\000i\000v\000e\000d\000\050\000\051}{subsection.3.25.2}% 51 | ||||
| \BOOKMARK [3][-]{subsubsection.3.25.2.2}{\376\377\0003\000.\0002\0005\000.\0002\000.\0002\000\040\000o\000n\000C\000o\000n\000n\000e\000c\000t\000e\000d\000\050\000\051}{subsection.3.25.2}% 52 | ||||
| \BOOKMARK [3][-]{subsubsection.3.25.2.3}{\376\377\0003\000.\0002\0005\000.\0002\000.\0003\000\040\000o\000n\000D\000a\000t\000a\000R\000e\000c\000e\000i\000v\000e\000d\000\050\000\051}{subsection.3.25.2}% 53 | ||||
| \BOOKMARK [3][-]{subsubsection.3.25.2.4}{\376\377\0003\000.\0002\0005\000.\0002\000.\0004\000\040\000o\000n\000R\000e\000g\000i\000s\000t\000e\000r\000e\000d\000\050\000\051}{subsection.3.25.2}% 54 | ||||
| \BOOKMARK [1][-]{section.3.26}{\376\377\0003\000.\0002\0006\000\040\000B\000M\000A\000S\000t\000r\000e\000a\000m\000C\000o\000n\000t\000e\000n\000t\000P\000r\000o\000v\000i\000d\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 55 | ||||
| \BOOKMARK [1][-]{section.3.27}{\376\377\0003\000.\0002\0007\000\040\000B\000M\000A\000S\000t\000r\000e\000a\000m\000F\000r\000a\000m\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 56 | ||||
| \BOOKMARK [1][-]{section.3.28}{\376\377\0003\000.\0002\0008\000\040\000B\000M\000A\000S\000t\000r\000e\000a\000m\000S\000e\000r\000v\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 57 | ||||
| \BOOKMARK [2][-]{subsection.3.28.1}{\376\377\0003\000.\0002\0008\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n}{section.3.28}% 58 | ||||
| \BOOKMARK [1][-]{section.3.29}{\376\377\0003\000.\0002\0009\000\040\000B\000M\000A\000S\000t\000r\000e\000a\000m\000S\000e\000s\000s\000i\000o\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 59 | ||||
| \BOOKMARK [2][-]{subsection.3.29.1}{\376\377\0003\000.\0002\0009\000.\0001\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.3.29}% 60 | ||||
| \BOOKMARK [3][-]{subsubsection.3.29.1.1}{\376\377\0003\000.\0002\0009\000.\0001\000.\0001\000\040\000o\000n\000D\000a\000t\000a\000R\000e\000c\000e\000i\000v\000e\000d\000\050\000\051}{subsection.3.29.1}% 61 | ||||
| \BOOKMARK [1][-]{section.3.30}{\376\377\0003\000.\0003\0000\000\040\000B\000M\000A\000T\000C\000P\000S\000e\000r\000v\000e\000r\000S\000o\000c\000k\000e\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 62 | ||||
| \BOOKMARK [2][-]{subsection.3.30.1}{\376\377\0003\000.\0003\0000\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n}{section.3.30}% 63 | ||||
| \BOOKMARK [2][-]{subsection.3.30.2}{\376\377\0003\000.\0003\0000\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.3.30}% 64 | ||||
| \BOOKMARK [3][-]{subsubsection.3.30.2.1}{\376\377\0003\000.\0003\0000\000.\0002\000.\0001\000\040\000a\000c\000c\000e\000p\000t\000\050\000\051}{subsection.3.30.2}% 65 | ||||
| \BOOKMARK [3][-]{subsubsection.3.30.2.2}{\376\377\0003\000.\0003\0000\000.\0002\000.\0002\000\040\000o\000n\000D\000a\000t\000a\000R\000e\000c\000e\000i\000v\000e\000d\000\050\000\051}{subsection.3.30.2}% 66 | ||||
| \BOOKMARK [1][-]{section.3.31}{\376\377\0003\000.\0003\0001\000\040\000B\000M\000A\000T\000C\000P\000S\000o\000c\000k\000e\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 67 | ||||
| \BOOKMARK [2][-]{subsection.3.31.1}{\376\377\0003\000.\0003\0001\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n}{section.3.31}% 68 | ||||
| \BOOKMARK [2][-]{subsection.3.31.2}{\376\377\0003\000.\0003\0001\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.3.31}% 69 | ||||
| \BOOKMARK [3][-]{subsubsection.3.31.2.1}{\376\377\0003\000.\0003\0001\000.\0002\000.\0001\000\040\000o\000n\000C\000o\000n\000n\000e\000c\000t\000e\000d\000\050\000\051}{subsection.3.31.2}% 70 | ||||
| \BOOKMARK [3][-]{subsubsection.3.31.2.2}{\376\377\0003\000.\0003\0001\000.\0002\000.\0002\000\040\000o\000u\000t\000p\000u\000t\000\050\000\051}{subsection.3.31.2}% 71 | ||||
| \BOOKMARK [1][-]{section.3.32}{\376\377\0003\000.\0003\0002\000\040\000B\000M\000A\000T\000h\000r\000e\000a\000d\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 72 | ||||
| \BOOKMARK [1][-]{section.3.33}{\376\377\0003\000.\0003\0003\000\040\000B\000M\000A\000T\000i\000m\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 73 | ||||
| \BOOKMARK [2][-]{subsection.3.33.1}{\376\377\0003\000.\0003\0003\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n}{section.3.33}% 74 | ||||
| \BOOKMARK [2][-]{subsection.3.33.2}{\376\377\0003\000.\0003\0003\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.3.33}% 75 | ||||
| \BOOKMARK [3][-]{subsubsection.3.33.2.1}{\376\377\0003\000.\0003\0003\000.\0002\000.\0001\000\040\000o\000n\000D\000a\000t\000a\000R\000e\000c\000e\000i\000v\000e\000d\000\050\000\051}{subsection.3.33.2}% 76 | ||||
| \BOOKMARK [1][-]{section.3.34}{\376\377\0003\000.\0003\0004\000\040\000B\000M\000A\000U\000D\000P\000S\000e\000r\000v\000e\000r\000S\000o\000c\000k\000e\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 77 | ||||
| \BOOKMARK [2][-]{subsection.3.34.1}{\376\377\0003\000.\0003\0004\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n}{section.3.34}% 78 | ||||
| \BOOKMARK [2][-]{subsection.3.34.2}{\376\377\0003\000.\0003\0004\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.3.34}% 79 | ||||
| \BOOKMARK [3][-]{subsubsection.3.34.2.1}{\376\377\0003\000.\0003\0004\000.\0002\000.\0001\000\040\000o\000n\000D\000a\000t\000a\000R\000e\000c\000e\000i\000v\000e\000d\000\050\000\051}{subsection.3.34.2}% 80 | ||||
| \BOOKMARK [1][-]{section.3.35}{\376\377\0003\000.\0003\0005\000\040\000B\000M\000A\000U\000D\000P\000S\000o\000c\000k\000e\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.3}% 81 | ||||
| \BOOKMARK [0][-]{section*.144}{\376\377\000I\000n\000d\000e\000x}{}% 82 | ||||
| \BOOKMARK [0][-]{section*.2}{\376\377\000I\000n\000d\000e\000x}{}% 1 | ||||
|  | ||||
| @ -1,82 +1 @@ | ||||
| \contentsline {chapter}{\numberline {1}Hierarchical Index}{1}{chapter.1} | ||||
| \contentsline {section}{\numberline {1.1}Class Hierarchy}{1}{section.1.1} | ||||
| \contentsline {chapter}{\numberline {2}Class Index}{3}{chapter.2} | ||||
| \contentsline {section}{\numberline {2.1}Class List}{3}{section.2.1} | ||||
| \contentsline {chapter}{\numberline {3}Class Documentation}{5}{chapter.3} | ||||
| \contentsline {section}{\numberline {3.1}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Account Class Reference}{5}{section.3.1} | ||||
| \contentsline {section}{\numberline {3.2}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Authenticate Class Reference}{6}{section.3.2} | ||||
| \contentsline {section}{\numberline {3.3}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Command Class Reference}{7}{section.3.3} | ||||
| \contentsline {section}{\numberline {3.4}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Console\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Server Class Reference}{8}{section.3.4} | ||||
| \contentsline {section}{\numberline {3.5}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Console\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Session Class Reference}{10}{section.3.5} | ||||
| \contentsline {subsection}{\numberline {3.5.1}Detailed Description}{11}{subsection.3.5.1} | ||||
| \contentsline {subsection}{\numberline {3.5.2}Member Function Documentation}{11}{subsection.3.5.2} | ||||
| \contentsline {subsubsection}{\numberline {3.5.2.1}output()}{12}{subsubsection.3.5.2.1} | ||||
| \contentsline {section}{\numberline {3.6}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}E\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Poll Class Reference}{12}{section.3.6} | ||||
| \contentsline {subsection}{\numberline {3.6.1}Detailed Description}{14}{subsection.3.6.1} | ||||
| \contentsline {subsection}{\numberline {3.6.2}Member Function Documentation}{14}{subsection.3.6.2} | ||||
| \contentsline {subsubsection}{\numberline {3.6.2.1}register\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Socket()}{14}{subsubsection.3.6.2.1} | ||||
| \contentsline {subsubsection}{\numberline {3.6.2.2}unregister\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Socket()}{14}{subsubsection.3.6.2.2} | ||||
| \contentsline {section}{\numberline {3.7}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}File Class Reference}{15}{section.3.7} | ||||
| \contentsline {subsection}{\numberline {3.7.1}Detailed Description}{15}{subsection.3.7.1} | ||||
| \contentsline {section}{\numberline {3.8}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Header Class Reference}{16}{section.3.8} | ||||
| \contentsline {section}{\numberline {3.9}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}H\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Request\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Handler Class Reference}{17}{section.3.9} | ||||
| \contentsline {section}{\numberline {3.10}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}H\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Server Class Reference}{18}{section.3.10} | ||||
| \contentsline {section}{\numberline {3.11}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}H\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Session Class Reference}{20}{section.3.11} | ||||
| \contentsline {subsection}{\numberline {3.11.1}Member Function Documentation}{21}{subsection.3.11.1} | ||||
| \contentsline {subsubsection}{\numberline {3.11.1.1}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Received()}{22}{subsubsection.3.11.1.1} | ||||
| \contentsline {section}{\numberline {3.12}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Log Class Reference}{22}{section.3.12} | ||||
| \contentsline {section}{\numberline {3.13}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}P3\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}File Class Reference}{22}{section.3.13} | ||||
| \contentsline {section}{\numberline {3.14}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}P3\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Stream\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Content\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Provider Class Reference}{23}{section.3.14} | ||||
| \contentsline {section}{\numberline {3.15}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}P3\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Stream\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Frame Class Reference}{24}{section.3.15} | ||||
| \contentsline {section}{\numberline {3.16}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Object Class Reference}{26}{section.3.16} | ||||
| \contentsline {section}{\numberline {3.17}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Parse\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Header Class Reference}{26}{section.3.17} | ||||
| \contentsline {section}{\numberline {3.18}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Property$<$ T $>$ Class Template Reference}{26}{section.3.18} | ||||
| \contentsline {section}{\numberline {3.19}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Session Class Reference}{27}{section.3.19} | ||||
| \contentsline {subsection}{\numberline {3.19.1}Detailed Description}{28}{subsection.3.19.1} | ||||
| \contentsline {subsection}{\numberline {3.19.2}Member Function Documentation}{28}{subsection.3.19.2} | ||||
| \contentsline {subsubsection}{\numberline {3.19.2.1}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Connected()}{28}{subsubsection.3.19.2.1} | ||||
| \contentsline {subsubsection}{\numberline {3.19.2.2}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Received()}{29}{subsubsection.3.19.2.2} | ||||
| \contentsline {subsubsection}{\numberline {3.19.2.3}output()}{29}{subsubsection.3.19.2.3} | ||||
| \contentsline {section}{\numberline {3.20}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}S\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}N\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}V\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}TE Class Reference}{29}{section.3.20} | ||||
| \contentsline {section}{\numberline {3.21}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}S\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}R\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}E\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}G\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}S\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}ER Class Reference}{30}{section.3.21} | ||||
| \contentsline {section}{\numberline {3.22}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}S\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Request\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Handler Class Reference}{31}{section.3.22} | ||||
| \contentsline {section}{\numberline {3.23}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}S\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Server Class Reference}{33}{section.3.23} | ||||
| \contentsline {section}{\numberline {3.24}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}S\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}I\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Session Class Reference}{35}{section.3.24} | ||||
| \contentsline {subsection}{\numberline {3.24.1}Member Function Documentation}{36}{subsection.3.24.1} | ||||
| \contentsline {subsubsection}{\numberline {3.24.1.1}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Received()}{37}{subsubsection.3.24.1.1} | ||||
| \contentsline {section}{\numberline {3.25}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Socket Class Reference}{37}{section.3.25} | ||||
| \contentsline {subsection}{\numberline {3.25.1}Constructor \& Destructor Documentation}{39}{subsection.3.25.1} | ||||
| \contentsline {subsubsection}{\numberline {3.25.1.1}$\sim $\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Socket()}{39}{subsubsection.3.25.1.1} | ||||
| \contentsline {subsection}{\numberline {3.25.2}Member Function Documentation}{39}{subsection.3.25.2} | ||||
| \contentsline {subsubsection}{\numberline {3.25.2.1}event\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Received()}{39}{subsubsection.3.25.2.1} | ||||
| \contentsline {subsubsection}{\numberline {3.25.2.2}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Connected()}{39}{subsubsection.3.25.2.2} | ||||
| \contentsline {subsubsection}{\numberline {3.25.2.3}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Received()}{40}{subsubsection.3.25.2.3} | ||||
| \contentsline {subsubsection}{\numberline {3.25.2.4}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Registered()}{40}{subsubsection.3.25.2.4} | ||||
| \contentsline {section}{\numberline {3.26}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Stream\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Content\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Provider Class Reference}{40}{section.3.26} | ||||
| \contentsline {section}{\numberline {3.27}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Stream\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Frame Class Reference}{41}{section.3.27} | ||||
| \contentsline {section}{\numberline {3.28}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Stream\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Server Class Reference}{42}{section.3.28} | ||||
| \contentsline {subsection}{\numberline {3.28.1}Detailed Description}{43}{subsection.3.28.1} | ||||
| \contentsline {section}{\numberline {3.29}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Stream\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Session Class Reference}{44}{section.3.29} | ||||
| \contentsline {subsection}{\numberline {3.29.1}Member Function Documentation}{45}{subsection.3.29.1} | ||||
| \contentsline {subsubsection}{\numberline {3.29.1.1}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Received()}{46}{subsubsection.3.29.1.1} | ||||
| \contentsline {section}{\numberline {3.30}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}C\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Server\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Socket Class Reference}{46}{section.3.30} | ||||
| \contentsline {subsection}{\numberline {3.30.1}Detailed Description}{47}{subsection.3.30.1} | ||||
| \contentsline {subsection}{\numberline {3.30.2}Member Function Documentation}{48}{subsection.3.30.2} | ||||
| \contentsline {subsubsection}{\numberline {3.30.2.1}accept()}{48}{subsubsection.3.30.2.1} | ||||
| \contentsline {subsubsection}{\numberline {3.30.2.2}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Received()}{48}{subsubsection.3.30.2.2} | ||||
| \contentsline {section}{\numberline {3.31}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}T\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}C\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Socket Class Reference}{48}{section.3.31} | ||||
| \contentsline {subsection}{\numberline {3.31.1}Detailed Description}{49}{subsection.3.31.1} | ||||
| \contentsline {subsection}{\numberline {3.31.2}Member Function Documentation}{50}{subsection.3.31.2} | ||||
| \contentsline {subsubsection}{\numberline {3.31.2.1}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Connected()}{50}{subsubsection.3.31.2.1} | ||||
| \contentsline {subsubsection}{\numberline {3.31.2.2}output()}{50}{subsubsection.3.31.2.2} | ||||
| \contentsline {section}{\numberline {3.32}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Thread Class Reference}{50}{section.3.32} | ||||
| \contentsline {section}{\numberline {3.33}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Timer Class Reference}{51}{section.3.33} | ||||
| \contentsline {subsection}{\numberline {3.33.1}Detailed Description}{52}{subsection.3.33.1} | ||||
| \contentsline {subsection}{\numberline {3.33.2}Member Function Documentation}{52}{subsection.3.33.2} | ||||
| \contentsline {subsubsection}{\numberline {3.33.2.1}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Received()}{52}{subsubsection.3.33.2.1} | ||||
| \contentsline {section}{\numberline {3.34}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}U\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}D\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Server\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Socket Class Reference}{53}{section.3.34} | ||||
| \contentsline {subsection}{\numberline {3.34.1}Detailed Description}{54}{subsection.3.34.1} | ||||
| \contentsline {subsection}{\numberline {3.34.2}Member Function Documentation}{54}{subsection.3.34.2} | ||||
| \contentsline {subsubsection}{\numberline {3.34.2.1}on\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Data\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Received()}{54}{subsubsection.3.34.2.1} | ||||
| \contentsline {section}{\numberline {3.35}B\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}M\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}A\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}U\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}D\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}P\discretionary {\unhbox \voidb@x \hbox {\relax \fontsize {7}{8}\selectfont $\leftarrow \joinrel \rhook $}}{}{}Socket Class Reference}{55}{section.3.35} | ||||
| \contentsline {chapter}{Index}{57}{section*.144} | ||||
| \contentsline {chapter}{Index}{1}{section*.2} | ||||
|  | ||||
							
								
								
									
										82
									
								
								html/CommandList_8h_source.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										81
									
								
								html/Command_8h_source.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										80
									
								
								html/ConsoleServer_8h_source.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										79
									
								
								html/ConsoleSession_8h_source.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,79 @@ | ||||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||||
| <html xmlns="http://www.w3.org/1999/xhtml"> | ||||
| <head> | ||||
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> | ||||
| <meta http-equiv="X-UA-Compatible" content="IE=9"/> | ||||
| <meta name="generator" content="Doxygen 1.8.13"/> | ||||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||||
| <title>My Project: ConsoleSession.h Source File</title> | ||||
| <link href="tabs.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="jquery.js"></script> | ||||
| <script type="text/javascript" src="dynsections.js"></script> | ||||
| <link href="search/search.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="search/searchdata.js"></script> | ||||
| <script type="text/javascript" src="search/search.js"></script> | ||||
| <link href="doxygen.css" rel="stylesheet" type="text/css" /> | ||||
| </head> | ||||
| <body> | ||||
| <div id="top"><!-- do not remove this div, it is closed by doxygen! --> | ||||
| <div id="titlearea"> | ||||
| <table cellspacing="0" cellpadding="0"> | ||||
|  <tbody> | ||||
|  <tr style="height: 56px;"> | ||||
|   <td id="projectalign" style="padding-left: 0.5em;"> | ||||
|    <div id="projectname">My Project | ||||
|    </div> | ||||
|   </td> | ||||
|  </tr> | ||||
|  </tbody> | ||||
| </table> | ||||
| </div> | ||||
| <!-- end header part --> | ||||
| <!-- Generated by Doxygen 1.8.13 --> | ||||
| <script type="text/javascript"> | ||||
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); | ||||
| </script> | ||||
| <script type="text/javascript" src="menudata.js"></script> | ||||
| <script type="text/javascript" src="menu.js"></script> | ||||
| <script type="text/javascript"> | ||||
| $(function() { | ||||
|   initMenu('',true,false,'search.php','Search'); | ||||
|   $(document).ready(function() { init_search(); }); | ||||
| }); | ||||
| </script> | ||||
| <div id="main-nav"></div> | ||||
| </div><!-- top --> | ||||
| <!-- window showing the filter options --> | ||||
| <div id="MSearchSelectWindow" | ||||
|      onmouseover="return searchBox.OnSearchSelectShow()" | ||||
|      onmouseout="return searchBox.OnSearchSelectHide()" | ||||
|      onkeydown="return searchBox.OnSearchSelectKey(event)"> | ||||
| </div> | ||||
| 
 | ||||
| <!-- iframe showing the search results (closed by default) --> | ||||
| <div id="MSearchResultsWindow"> | ||||
| <iframe src="javascript:void(0)" frameborder="0"  | ||||
|         name="MSearchResults" id="MSearchResults"> | ||||
| </iframe> | ||||
| </div> | ||||
| 
 | ||||
| <div class="header"> | ||||
|   <div class="headertitle"> | ||||
| <div class="title">ConsoleSession.h</div>  </div> | ||||
| </div><!--header--> | ||||
| <div class="contents"> | ||||
| <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="preprocessor">#ifndef __ConsoleSession_h__</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="preprocessor">#define __ConsoleSession_h__</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span> </div><div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="preprocessor">#include "TerminalSession.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="preprocessor">#include "TCPSession.h"</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="preprocessor">#include "CommandList.h"</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span> </div><div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="keyword">namespace </span><a class="code" href="namespacecore.html">core</a> {</div><div class="line"><a name="l00009"></a><span class="lineno">    9</span> </div><div class="line"><a name="l00017"></a><span class="lineno">   17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="classcore_1_1ConsoleSession.html">   18</a></span>    <span class="keyword">class </span><a class="code" href="classcore_1_1ConsoleSession.html">ConsoleSession</a> : <span class="keyword">public</span> <a class="code" href="classcore_1_1TerminalSession.html">TerminalSession</a> {</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>   </div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>     <span class="keyword">public</span>:</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>       <a class="code" href="classcore_1_1ConsoleSession.html">ConsoleSession</a>(<a class="code" href="classcore_1_1EPoll.html">EPoll</a> &ePoll, <a class="code" href="classcore_1_1TCPServer.html">TCPServer</a> &server);</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>       ~<a class="code" href="classcore_1_1ConsoleSession.html">ConsoleSession</a>(); </div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>    </div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>       <span class="keywordtype">void</span> writeLog(std::string data);</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>     <span class="keyword">protected</span>:</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>       <span class="keywordtype">void</span> <a class="code" href="classcore_1_1ConsoleSession.html#a9fc306ab91d0f2a6990984040ecb3e47">protocol</a>(std::stringstream &out, std::string data) <span class="keyword">override</span>; </div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>    </div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>     <span class="keyword">private</span>:</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>       <span class="keyword">enum</span> Status {WELCOME, LOGIN, WAIT_USER_PROFILE, PASSWORD, WAIT_PASSWORD, PROMPT, INPUT, PROCESS, DONE};</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>       Status status = WELCOME;   </div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>       <span class="keywordtype">void</span> doCommand(std::string request);</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>       std::string command;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>   </div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>    };</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div><div class="line"><a name="l00037"></a><span class="lineno">   37</span> }</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div><div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="preprocessor">#endif</span></div><div class="ttc" id="classcore_1_1ConsoleSession_html"><div class="ttname"><a href="classcore_1_1ConsoleSession.html">core::ConsoleSession</a></div><div class="ttdef"><b>Definition:</b> ConsoleSession.h:18</div></div> | ||||
| <div class="ttc" id="namespacecore_html"><div class="ttname"><a href="namespacecore.html">core</a></div><div class="ttdef"><b>Definition:</b> Command.cpp:4</div></div> | ||||
| <div class="ttc" id="classcore_1_1EPoll_html"><div class="ttname"><a href="classcore_1_1EPoll.html">core::EPoll</a></div><div class="ttdef"><b>Definition:</b> EPoll.h:31</div></div> | ||||
| <div class="ttc" id="classcore_1_1ConsoleSession_html_a9fc306ab91d0f2a6990984040ecb3e47"><div class="ttname"><a href="classcore_1_1ConsoleSession.html#a9fc306ab91d0f2a6990984040ecb3e47">core::ConsoleSession::protocol</a></div><div class="ttdeci">void protocol(std::stringstream &out, std::string data) override</div><div class="ttdef"><b>Definition:</b> ConsoleSession.cpp:12</div></div> | ||||
| <div class="ttc" id="classcore_1_1TCPServer_html"><div class="ttname"><a href="classcore_1_1TCPServer.html">core::TCPServer</a></div><div class="ttdef"><b>Definition:</b> TCPServer.h:24</div></div> | ||||
| <div class="ttc" id="classcore_1_1TerminalSession_html"><div class="ttname"><a href="classcore_1_1TerminalSession.html">core::TerminalSession</a></div><div class="ttdef"><b>Definition:</b> TerminalSession.h:30</div></div> | ||||
| </div><!-- fragment --></div><!-- contents --> | ||||
| <!-- start footer part --> | ||||
| <hr class="footer"/><address class="footer"><small> | ||||
| Generated by  <a href="http://www.doxygen.org/index.html"> | ||||
| <img class="footer" src="doxygen.png" alt="doxygen"/> | ||||
| </a> 1.8.13 | ||||
| </small></address> | ||||
| </body> | ||||
| </html> | ||||