- Added AgentConnectionEx class able to handle agent traps
authorVictor Kirhenshtein <victor@netxms.org>
Thu, 23 Mar 2006 07:46:41 +0000 (07:46 +0000)
committerVictor Kirhenshtein <victor@netxms.org>
Thu, 23 Mar 2006 07:46:41 +0000 (07:46 +0000)
- Various minor changes

.gitattributes
src/server/core/agent.cpp [new file with mode: 0644]
src/server/core/main.cpp
src/server/core/nxcore.dsp
src/server/dbdrv/sqlite/sqlite.cpp
src/server/libnxsrv/main.cpp

index 31f0700..b2d6b38 100644 (file)
@@ -945,6 +945,7 @@ src/server/core/Makefile.am -text
 src/server/core/acl.cpp -text
 src/server/core/actions.cpp -text
 src/server/core/admin.cpp -text
+src/server/core/agent.cpp -text
 src/server/core/alarm.cpp -text
 src/server/core/client.cpp -text
 src/server/core/config.cpp -text
diff --git a/src/server/core/agent.cpp b/src/server/core/agent.cpp
new file mode 100644 (file)
index 0000000..f80ab8a
--- /dev/null
@@ -0,0 +1,74 @@
+/* 
+** NetXMS - Network Management System
+** Copyright (C) 2006 Victor Kirhenshtein
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+**
+** File: agent.cpp
+**
+**/
+
+#include "nxcore.h"
+
+
+//
+// Destructor for extended agent connection class
+//
+
+AgentConnectionEx::~AgentConnectionEx()
+{
+}
+
+
+//
+// Trap processor
+//
+
+void AgentConnectionEx::OnTrap(CSCPMessage *pMsg)
+{
+   DWORD dwEventCode;
+   int i, iNumArgs;
+   Node *pNode;
+   TCHAR *pszArgList[32];
+   TCHAR szFormat[] = "ssssssssssssssssssssssssssssssss";
+
+   pNode = FindNodeByIP(GetIpAddr());
+   if (pNode != NULL)
+   {
+      dwEventCode = pMsg->GetVariableLong(VID_EVENT_CODE);
+      iNumArgs = (int)pMsg->GetVariableShort(VID_NUM_ARGS);
+      if (iNumArgs > 32)
+         iNumArgs = 32;
+      for(i = 0; i < iNumArgs; i++)
+         pszArgList[i] = pMsg->GetVariableStr(VID_EVENT_ARG_BASE + i);
+
+      // Following call is not very good, but I'm too lazy now
+      // to change PostEvent()
+      szFormat[iNumArgs] = 0;
+      PostEvent(dwEventCode, pNode->Id(), (iNumArgs > 0) ? szFormat : NULL,
+                pszArgList[0], pszArgList[1], pszArgList[2], pszArgList[3],
+                pszArgList[4], pszArgList[5], pszArgList[6], pszArgList[7],
+                pszArgList[8], pszArgList[9], pszArgList[10], pszArgList[11],
+                pszArgList[12], pszArgList[13], pszArgList[14], pszArgList[15],
+                pszArgList[16], pszArgList[17], pszArgList[18], pszArgList[19],
+                pszArgList[20], pszArgList[21], pszArgList[22], pszArgList[23],
+                pszArgList[24], pszArgList[25], pszArgList[26], pszArgList[27],
+                pszArgList[28], pszArgList[29], pszArgList[30], pszArgList[31]);
+      
+      // Cleanup
+      for(i = 0; i < iNumArgs; i++)
+         free(pszArgList[i]);
+   }
+}
index d8a19bb..234bbe3 100644 (file)
@@ -1114,6 +1114,8 @@ void InitiateShutdown(void)
 
 BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
 {
+   if (dwReason == DLL_PROCESS_ATTACH)
+      DisableThreadLibraryCalls(hInstance);
    return TRUE;
 }
 
index 04a400a..6e841f9 100644 (file)
@@ -414,6 +414,10 @@ SOURCE="..\..\..\include\netxms-version.h"
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\..\include\netxms_maps.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\..\include\netxmsdb.h
 # End Source File
 # Begin Source File
index 631628e..da75479 100644 (file)
@@ -353,7 +353,8 @@ extern "C" void EXPORT DrvFreeAsyncResult(DB_ASYNC_RESULT hResult)
 
 BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
 {
-   DisableThreadLibraryCalls(hInstance);
+   if (dwReason == DLL_PROCESS_ATTACH)
+      DisableThreadLibraryCalls(hInstance);
    return TRUE;
 }
 
index 5271281..185c185 100644 (file)
@@ -185,6 +185,8 @@ BYTE LIBNXSRV_EXPORTABLE *LoadFile(char *pszFileName, DWORD *pdwFileSize)
 
 BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
 {
+   if (dwReason == DLL_PROCESS_ATTACH)
+      DisableThreadLibraryCalls(hInstance);
    return TRUE;
 }