diff options
Diffstat (limited to 'cvs/cvsweb.cgi/code/nelns/admin_executor_service/admin_executor_service.cpp.diff?r1=1.1&r2=1.2')
-rw-r--r-- | cvs/cvsweb.cgi/code/nelns/admin_executor_service/admin_executor_service.cpp.diff?r1=1.1&r2=1.2 | 368 |
1 files changed, 368 insertions, 0 deletions
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_executor_service/admin_executor_service.cpp.diff?r1=1.1&r2=1.2 b/cvs/cvsweb.cgi/code/nelns/admin_executor_service/admin_executor_service.cpp.diff?r1=1.1&r2=1.2 new file mode 100644 index 00000000..7382084f --- /dev/null +++ b/cvs/cvsweb.cgi/code/nelns/admin_executor_service/admin_executor_service.cpp.diff?r1=1.1&r2=1.2 @@ -0,0 +1,368 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML> +<HEAD><style> A { color:black }</style> +<!-- hennerik CVSweb $Revision: 1.93 $ --> +<TITLE>code/nelns/admin_executor_service/admin_executor_service.cpp - diff - 1.2</TITLE></HEAD> +<BODY BGCOLOR="#eeeeee"> +<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_executor_service/admin_executor_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_executor_service/admin_executor_service.cpp">admin_executor_service.cpp</A> + CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_executor_service/">admin_executor_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_executor_service/admin_executor_service.cpp between version 1.1 and 1.2</h3> +<table border=0 cellspacing=0 cellpadding=0 width="100%"> +<tr bgcolor="#ffffff"> +<th width="50%" valign=TOP>version 1.1, 2001/04/18 13:54:25</th> +<th width="50%" valign=TOP>version 1.2, 2001/05/02 12:36:39</th> +<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 2</b> <font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 2</b> <font size=-1></font></td></tr></table></td> +<tr><td><font face="Helvetica,Arial" size="-1"> * Admin Executor Service (AES)</font></td><td><font face="Helvetica,Arial" size="-1"> * Admin Executor Service (AES)</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> *</font></td><td><font face="Helvetica,Arial" size="-1"> *</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> * $Id$</font></td><td><font face="Helvetica,Arial" size="-1"> * $Id$</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> *</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> */</font></td><td><font face="Helvetica,Arial" size="-1"> */</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> /* Copyright, 2000 Nevrax Ltd.</font></td><td><font face="Helvetica,Arial" size="-1"> /* Copyright, 2000 Nevrax Ltd.</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> *</font></td><td><font face="Helvetica,Arial" size="-1"> *</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * This file is part of NEVRAX NeL Network Services</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * This file is part of NEVRAX D.T.C. SYSTEM.</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * NEVRAX NeL Network Services is free software; you can redistribute it and/or modify</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * NEVRAX D.T.C. SYSTEM is free software; you can redistribute it and/or modify</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> * it under the terms of the GNU General Public License as published by</font></td><td><font face="Helvetica,Arial" size="-1"> * it under the terms of the GNU General Public License as published by</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> * the Free Software Foundation; either version 2, or (at your option)</font></td><td><font face="Helvetica,Arial" size="-1"> * the Free Software Foundation; either version 2, or (at your option)</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> * any later version.</font></td><td><font face="Helvetica,Arial" size="-1"> * any later version.</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> *</font></td><td><font face="Helvetica,Arial" size="-1"> *</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * NEVRAX NeL Network Services is distributed in the hope that it will be useful, but</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * NEVRAX D.T.C. SYSTEM is distributed in the hope that it will be useful, but</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font></td><td><font face="Helvetica,Arial" size="-1"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font></td><td><font face="Helvetica,Arial" size="-1"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> * General Public License for more details.</font></td><td><font face="Helvetica,Arial" size="-1"> * General Public License for more details.</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> *</font></td><td><font face="Helvetica,Arial" size="-1"> *</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> * You should have received a copy of the GNU General Public License</font></td><td><font face="Helvetica,Arial" size="-1"> * You should have received a copy of the GNU General Public License</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * along with NEVRAX NeL Network Services; see the file COPYING. If not, write to the</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * along with NEVRAX D.T.C. SYSTEM; see the file COPYING. If not, write to the</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,</font></td><td><font face="Helvetica,Arial" size="-1"> * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> * MA 02111-1307, USA.</font></td><td><font face="Helvetica,Arial" size="-1"> * MA 02111-1307, USA.</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> */</font></td><td><font face="Helvetica,Arial" size="-1"> */</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include <nel/misc/debug.h></font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include <io.h></font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include <nel/misc/log.h></font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include <process.h></font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include <nel/misc/common.h></font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include <fcntl.h></font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include <nel/net/service.h></font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include <sys/stat.h></font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include <nel/net/net_displayer.h></font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include <string></font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include "sysload.h"</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include <list></font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include "sysmem.h"</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include "sysswap.h"</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include "nel/misc/debug.h"</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include "nel/misc/config_file.h"</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include "nel/misc/thread.h"</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include "nel/net/service.h"</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #include "nel/net/net_manager.h"</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> using namespace std;</font></td><td><font face="Helvetica,Arial" size="-1"> using namespace std;</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> using namespace NLMISC;</font></td><td><font face="Helvetica,Arial" size="-1"> using namespace NLMISC;</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> using namespace NLNET;</font></td><td><font face="Helvetica,Arial" size="-1"> using namespace NLNET;</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1"> static const char UNKNOW_VALUE[] = "<Unknown>";</font></td><td bgcolor="#cccccc"> </td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> struct CService</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> CService(TSockId s) : ServiceSockId(s), ServiceId(NextServiceId++) { }</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> CLog StatLog(CLog::LOG_STAT);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> TSockId ServiceSockId; // socket number to communicate with</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> uint32 ServiceId; // id to identify it</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> string ShortName;</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> string LongName;</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> private:</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> /// Log Stat data (STT)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> static uint32 NextServiceId;</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> void sendData (const char *str, TSenderId from)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> };</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> {</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> StatLog.displayNL( str );</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> }</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> uint32 CService::NextServiceId = 0;</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> /// Log the last minute average load</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> list<CService> Services;</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> void cbLoad ( CMessage& message, TSenderId from )</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> typedef list<CService>::iterator sit;</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> {</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> CSysLoad sysload = CSysLoad();</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> double load = sysload.getLoadInfo();</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> string answer( "LOAD " );</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> if ( load < 0 )</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> sit find (TSockId sid)</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> {</font></td><td><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> answer.append( UNKNOW_VALUE );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> sit it;</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> for (it = Services.begin(); it != Services.end(); it++)</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> if ((*it).ServiceSockId == sid) break;</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> }</font></td><td><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> else</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> return it;</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> sit find (uint32 sid)</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> sit it;</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> for (it = Services.begin(); it != Services.end(); it++)</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> {</font></td><td><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> char str[6];</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> if ((*it).ServiceId == sid) break;</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> smprintf( str, 6, "%.2f", load );</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> answer.append( string(str) );</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> }</font></td><td><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> return it;</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> sendData( answer.c_str(), from );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> class CExecuteCommandThread : public IRunnable</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> public:</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> string Command;</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> CExecuteCommandThread (string command) : Command(command) { }</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> void run ()</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> nlinfo ("start executing: %s", Command.c_str());</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> system (Command.c_str());</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> nlinfo ("end executing: %s", Command.c_str());</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> }</font></td><td><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> };</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> void executeCommand (string command, bool background)</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> if (command.empty()) return;</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> /// Log the total memory size and the used memory size (in B)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> /*</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> void cbMemory ( CMessage& message, TSenderId from )</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> nlinfo ("start executing: %s", command.c_str());</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> if (command[command.size()-1] == '&')</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> {</font></td><td><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> CSysMemory sysmem = CSysMemory();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> command.resize(command.size()-2);</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> sint memUsage = sysmem.getMemoryUsage();</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> string answer( "MEM " );</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> if ( memUsage < 0 )</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> if (spawnlp (_P_NOWAIT, cmd.c_str(), command.c_str(), NULL) == -1)</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> {</font></td><td><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> answer.append( UNKNOW_VALUE );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> perror ("ca chie grave!!!!: ");</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> }</font></td><td><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> else</font></td><td><font face="Helvetica,Arial" size="-1"> else</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> {</font></td><td><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> char str[3];</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> if (spawnlp (_P_WAIT, cmd.c_str(), command.c_str(), NULL) == -1)</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> smprintf( str, 3, "%d", memUsage );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> answer.append( string(str) );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> perror ("ca chie grave!!!!: ");</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> }</font></td><td><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> nlinfo ("end executing: %s", command.c_str());</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> */</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> sendData( answer.c_str(), from );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> command += " >NUL:";</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> if (background)</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> IThread *thread = IThread::create (new CExecuteCommandThread (command));</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> thread->start ();</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> else</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> CExecuteCommandThread cmdt (command);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> cmdt.run ();</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> }</font></td><td><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> /// Log the swap size and the used swap space (in kB)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> /*</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> void cbSwap ( CMessage& message, TSenderId from )</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> // execute without </font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> void executeCommand (string command, TSockId from, CCallbackNetBase &netbase)</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> {</font></td><td><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> CSysSwap sysswap = CSysSwap();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> if (command.empty()) return;</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> sint swapUsage = sysswap.getSwapUsage();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> string answer( "SWAP " );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #define STDOUT 1</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> #define STDERR 2</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> int nul, oldstdout, oldstderr;</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> char *tmpfilename = tmpnam (NULL);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> nul = _open(tmpfilename, _O_RDWR | _O_CREAT | _O_TRUNC | _O_TEMPORARY | _O_SHORT_LIVED | _O_EXCL, _S_IREAD | _S_IWRITE);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> oldstdout = _dup(STDOUT);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> oldstderr = _dup(STDERR);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> _dup2(nul, STDOUT);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> _dup2(nul, STDERR);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> system(command.c_str());</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> _dup2(oldstdout, STDOUT);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> _dup2(oldstderr, STDERR);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> _close(oldstdout);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> _close(oldstderr);</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> if ( swapUsage < 0 )</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> _lseek (nul, 0L, SEEK_SET);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> while (!_eof(nul))</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> {</font></td><td><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> answer.append( UNKNOW_VALUE );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> uint8 buffer[10000];</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> uint32 nbread = _read (nul, buffer, 10000);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> CMessage msgout (netbase.getSIDA(), "ESCR");</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> msgout.serial (nbread);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> msgout.serialBuffer (buffer, nbread);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> netbase.send (msgout, from);</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> }</font></td><td><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> else</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> _close(nul);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> */</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> /*</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> FILE *fp = fopen ("test.txt", "r");</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> do</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> {</font></td><td><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> char str[3];</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> char str[1024];</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> smprintf( str, 3, "%d", swapUsage );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> fgets (str, 1024, fp);</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> answer.append( string(str) );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> if (feof(fp)) break;</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> result.push_back (str);</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> }</font></td><td><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> while (true);</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> fclose (fp);</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> // remove ("test.txt");</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> *///}</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> sendData( answer.c_str(), from );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> ////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> }</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> ////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> ////////////////// CONNECTION TO THE SERVICES //////////////////////////////////////////////////////////</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> ////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> ////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> static void cbServiceIdentification (CMessage& msgin, TSockId from, CCallbackNetBase &netbase)</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> CService *c = (CService*) from->appId();</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> msgin.serial (c->ShortName);</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> msgin.serial (c->LongName);</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> nlinfo ("%s %s %s is identified", from->asString().c_str(), c->ShortName.c_str(), c->LongName.c_str());</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> CMessage msgout (CNetManager::getSIDA ("AESAS"), "SID");</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> msgout.serial (c->ShortName);</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> msgout.serial (c->LongName);</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> CNetManager::send ("AESAS", msgout);</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> // Log all the server informations.</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> static void cbServiceReady (CMessage& msgin, TSockId from, CCallbackNetBase &netbase)</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> void cbSystem ( CMessage& message, TSenderId from )</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> {</font></td><td><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> cbLoad ( message, from );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> CService *c = (CService*) from->appId();</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> cbMemory ( message, from );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> cbSwap ( message, from );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> nlinfo ("%s %s %s is ready", from->asString().c_str(), c->ShortName.c_str(), c->LongName.c_str());</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> CMessage msgout (CNetManager::getSIDA ("AESAS"), "SR");</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> msgout.serial (c->ShortName);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> msgout.serial (c->LongName);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> CNetManager::send ("AESAS", msgout);</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> }</font></td><td><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> void serviceConnection (const string &serviceName, TSockId from, void *arg)</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> Services.push_back (CService(from));</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> CService *c = &(Services.back());</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> from->setAppId ((uint64)c);</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> /**</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> nlinfo ("%s is connected", from->asString().c_str());</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * Callback Array</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * Message types:</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> CMessage msgout (CNetManager::getSIDA ("AESAS"), "SC");</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * LOAD: log Load information</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> CNetManager::send ("AESAS", msgout);</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * MEMORY: log Memory information</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * SWAP: log Swap information</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * SYSTEM: log the Load, Memory, and Swap informations</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> void serviceDisconnection (const string &serviceName, TSockId from, void *arg)</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> */</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> TCallbackItem CallbackArray[] =</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> {</font></td><td><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> { "LOAD", cbLoad },</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> CService *c = (CService*) from->appId();</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> { "MEMORY", cbMemory },</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> { "SWAP", cbSwap },</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> { "SYSTEM", cbSystem }</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> nlinfo ("%s %s %s is disconnected", from->asString().c_str(), c->ShortName.c_str(), c->LongName.c_str());</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> };</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> CMessage msgout (CNetManager::getSIDA ("AESAS"), "SD");</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> msgout.serial (c->ShortName);</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> msgout.serial (c->LongName);</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> CNetManager::send ("AESAS", msgout);</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> /** Admin Executor Service (AES).</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> /** Callback Array</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * Log informations (load, memory usage, etc ...) about the server it's</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * running on.</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * These informations are used by the Admin Service (AS) and the Naming</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> * Service (NS) to watch the differents servers of the shard.</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> */</font></td><td><font face="Helvetica,Arial" size="-1"> */</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> class CAdminExecutorService : public NLNET::IService</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> TCallbackItem ServicesCallbackArray[] =</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> {</font></td><td><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> public:</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> { "SID", cbServiceIdentification },</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> { "SR", cbServiceReady },</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> };</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> /// Initializes the service</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> ////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> void init ()</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> ////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> ////////////////// CONNECTION TO THE AS ////////////////////////////////////////////////////////////////</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> ////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> ////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> static void cbExecuteSystemCommand (CMessage& msgin, TSockId from, CCallbackNetBase &netbase)</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> {</font></td><td><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> // Connect to the Log Service</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> string systemCommand;</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> StatLog.addDisplayer( new NLMISC::CStdDisplayer() );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> uint8 background;</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> msgin.serial (systemCommand);</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> msgin.serial (background);</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> NLNET::CNetDisplayer *nd = new NLNET::CNetDisplayer;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> nlinfo ("I have to execute '%s'", systemCommand.c_str());</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> if ( nd->connected() )</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> executeCommand (systemCommand, background==1);</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> {</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> StatLog.addDisplayer( nd );</font></td><td bgcolor="#99cc99"> </td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> }</font></td><td><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> else</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> static void cbStopService (CMessage& msgin, TSockId from, CCallbackNetBase &netbase)</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> {</font></td><td><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> nlerror( "Coudn't connect to the Log Service." );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> string service;</font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> }</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> nlinfo ("I have to stop service");</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> }</font></td><td><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> TCallbackItem AESASCallbackArray[] =</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> { "ESC", cbExecuteSystemCommand },</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> { "SS", cbStopService },</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> };</font></td><td><font face="Helvetica,Arial" size="-1"> };</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> ////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> ////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> ////////////////// SERVICE IMPLEMENTATION //////////////////////////////////////////////////////////////</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> ////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> ////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> class CAdminExecutorService : public IService</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> public:</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> /// Init the service, load the universal time.</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> void init ()</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> CNetManager::setConnectionCallback ("AES", serviceConnection, NULL);</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> CNetManager::setDisconnectionCallback ("AES", serviceDisconnection, NULL);</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> // install the server for AS</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> CNetManager::addServer ("AESAS", 49996);</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> CNetManager::addCallbackArray ("AESAS", AESASCallbackArray, sizeof(AESASCallbackArray)/sizeof(AESASCallbackArray[0]));</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> bool update ()</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> {</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> return true;</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> }</font></td></tr> +<tr><td bgcolor="#cccccc"> </td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1"> };</font></td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1"> NLNET_SERVICE_MAIN( CAdminExecutorService, "AES", 50009 );</font></td><td bgcolor="#cccccc"> </td></tr> +<tr><td><font face="Helvetica,Arial" size="-1"> </font></td><td><font face="Helvetica,Arial" size="-1"> </font></td></tr> +<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> // End of admin_executor_service.cpp</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> /// Naming Service</font></td></tr> +<tr><td bgcolor="#99cc99"> </td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1"> NLNET_SERVICE_MAIN (CAdminExecutorService, "AES", "admin_executor_service", 49997, ServicesCallbackArray);</font></td></tr> +</table><br><hr noshade width="100%"> +<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1> +<tr><td align=center bgcolor="#ff9999">Removed from v.1.1</td><td bgcolor="#cccccc"> </td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc"> </td><td align=center bgcolor="#ccccff">Added in v.1.2</td></tr></table></td></tr></table> +<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_executor_service/admin_executor_service.cpp.diff"> +<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.1"> +<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.2"> +<SELECT NAME="f" onchange="submit()"> +<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show"> +</FORM> +</td></tr></table>
\ No newline at end of file |