From 0ea5fc66924303d1bf73ba283a383e2aadee02f2 Mon Sep 17 00:00:00 2001 From: neodarz Date: Sat, 11 Aug 2018 20:21:34 +0200 Subject: Initial commit --- .../x-cvsweb-markup/index.html | 253 +++++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100644 cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.2&content-type=text/x-cvsweb-markup/index.html (limited to 'cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.2&content-type=text/x-cvsweb-markup/index.html') diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.2&content-type=text/x-cvsweb-markup/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.2&content-type=text/x-cvsweb-markup/index.html new file mode 100644 index 00000000..eb84b26f --- /dev/null +++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.2&content-type=text/x-cvsweb-markup/index.html @@ -0,0 +1,253 @@ + + + +code/nelns/admin_service/admin_service.cpp - view - 1.2 + +
[BACK] Return to admin_service.cpp + CVS log [TXT][DIR] Up to Nevrax / code / nelns / admin_service

File: Nevrax / code / nelns / admin_service / admin_service.cpp (download)
+Revision 1.2, Thu May 3 13:19:13 2001 UTC (14 months, 3 weeks ago) by lecroart +
Branch: MAIN +
Changes since 1.1: +2 -6 + lines
+BUGFIX: now compile on linux
+
+

/** \file admin_service.cpp
+ * Admin Service (AS)
+ *
+ * $Id: admin_service.cpp,v 1.2 2001/05/03 13:19:13 lecroart Exp $
+ *
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX D.T.C. SYSTEM.
+ * NEVRAX D.T.C. SYSTEM is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * NEVRAX D.T.C. SYSTEM is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX D.T.C. SYSTEM; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include <string>
+#include <list>
+
+#include "nel/net/service.h"
+#include "nel/misc/debug.h"
+#include "nel/misc/config_file.h"
+
+#include "nel/net/net_manager.h"
+
+ 
+using namespace std;
+using namespace NLMISC;
+using namespace NLNET;
+
+
+struct CService
+{
+        CService(TSockId s) : AESSockId(s), AESId(NextAESId++) { }
+
+        TSockId        AESSockId;                // TSockId of the AES that have this service
+        uint32        AESId;                        // TSockId of the AES that have this service
+        uint32        SId;                        // uint32 to identify the service
+        string        ShortName;
+        string        LongName;
+
+private:
+
+        static        uint32 NextAESId;
+};
+
+uint32 CService::NextAESId = 0;
+
+list<CService> Services;
+typedef list<CService>::iterator sit;
+
+sit find (TSockId aesid, uint32 sid)
+{
+        sit it;
+        for (it = Services.begin(); it != Services.end(); it++)
+        {
+                if ((*it).AESSockId== aesid && (*it).SId == sid) break;
+        }
+        return it;
+}
+
+sit find (uint32 aesid, uint32 sid)
+{
+        sit it;
+        for (it = Services.begin(); it != Services.end(); it++)
+        {
+                if ((*it).AESId == aesid && (*it).SId == sid) break;
+        }
+        return it;
+}
+
+/*
+NLMISC_COMMAND (start, "start a service", "<service_name>")
+{
+        if(args.size() != 1 && args.size() != 2) return false;
+
+        CMessage msgout (CNetManager::getSIDA("AES"), "ESC");
+        msgout.serial (args[1]);
+
+        uint8 background = 0;
+
+        if (args.size() == 2)
+        {
+                if (args[1] == "&")
+                        uint8 background = 1;
+                else
+                        return false;
+        }
+
+        msgout.serial (background);
+        CNetManager::send ("AES", msgout);
+        return true;
+}
+
+
+CLog logstdout;
+CStdDisplayer dispstdout;
+
+NLMISC_COMMAND (stop, "stop a service", "<aesid> <sid>")
+{
+        if(args.size() != 3) return false;
+
+        CMessage msgout (CNetManager::getSIDA("AES"), "SS");
+        msgout.serial (args[2]);
+        CNetManager::send ("AES", msgout);
+}
+*/
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE AES ///////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+static void cbExecuteSystemCommandResult (CMessage& msgin, TSockId from, CCallbackNetBase &netbase)
+{
+        vector<string> result;
+        msgin.serialCont (result);
+
+        nlinfo("command result");
+        for (uint i = 0; i < result.size(); i++)
+        {
+                printf ("%s", result[i].c_str());
+        }
+        nlinfo("end of command result");
+}
+
+static void cbServiceIdentification (CMessage& msgin, TSockId from, CCallbackNetBase &netbase)
+{
+        string ShortName, LongName;
+
+        msgin.serial (ShortName);
+        msgin.serial (LongName);
+
+        nlinfo ("%s %s %s is identified", from->asString().c_str(), ShortName.c_str(), LongName.c_str());
+}
+
+static void cbServiceReady (CMessage& msgin, TSockId from, CCallbackNetBase &netbase)
+{
+        string ShortName, LongName;
+
+        msgin.serial (ShortName);
+        msgin.serial (LongName);
+
+        nlinfo ("%s %s %s is ready", from->asString().c_str(), ShortName.c_str(), LongName.c_str());
+}
+
+static void cbServiceConnection (CMessage& msgin, TSockId from, CCallbackNetBase &netbase)
+{
+        nlinfo ("%s a service is connected", from->asString().c_str());
+}
+
+static void cbServiceDisconnection (CMessage& msgin, TSockId from, CCallbackNetBase &netbase)
+{
+        string ShortName, LongName;
+
+        msgin.serial (ShortName);
+        msgin.serial (LongName);
+
+        nlinfo ("%s %s %s is disconnected", from->asString().c_str(), ShortName.c_str(), LongName.c_str());
+}
+
+
+TCallbackItem AESCallbackArray[] =
+{
+        { "ESCR", cbExecuteSystemCommandResult },
+
+        { "SID", cbServiceIdentification },
+        { "SR", cbServiceReady },
+        { "SC", cbServiceConnection },
+        { "SD", cbServiceDisconnection },
+};
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE CLIENT ////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void clientConnection (const string &serviceName, TSockId from, void *arg)
+{
+        // new client, send him all out info about services
+
+        nlinfo ("client %s is connected", from->asString().c_str());
+        
+        CMessage msgout (CNetManager::getSIDA ("AESAS"), "SL");
+        uint32 size = (uint32)Services.size();
+        msgout.serial (size);
+        for (sit it = Services.begin(); it != Services.end(); it++)
+        {
+                msgout.serial ((*it).AESId);
+                msgout.serial ((*it).SId);
+                msgout.serial ((*it).ShortName);
+                msgout.serial ((*it).LongName);
+        }
+        CNetManager::send ("AS", msgout, from);
+}
+
+TCallbackItem ASCallbackArray[] =
+{
+        { "", NULL },
+};
+
+class CAdminService : public IService
+{
+public:
+
+        /// Init the service, load the universal time.
+        void                init ()
+        {
+                CNetManager::setConnectionCallback ("AS", clientConnection, NULL);
+
+                // connec to the AES
+                CNetManager::addClient ("AES", "localhost:49996");
+                CNetManager::addCallbackArray ("AES", AESCallbackArray, sizeof (AESCallbackArray)/sizeof(AESCallbackArray[0]));
+
+        }
+
+        bool                update ()
+        {
+                return true;
+        }
+};
+
+
+/// Naming Service
+NLNET_SERVICE_MAIN (CAdminService, "AS", "admin_service", 49995, ASCallbackArray);
+
\ No newline at end of file -- cgit v1.2.1