- Implemented loading of NetworkService objects at startup
authorVictor Kirhenshtein <victor@netxms.org>
Thu, 27 Jan 2005 06:44:34 +0000 (06:44 +0000)
committerVictor Kirhenshtein <victor@netxms.org>
Thu, 27 Jan 2005 06:44:34 +0000 (06:44 +0000)
- Fixed bug in NetworkObject::SaveToDB() (incorrect table name)
- Fixed bug in first free object id detection (table network_services was not checked)

src/server/core/id.cpp
src/server/core/netsrv.cpp
src/server/core/objects.cpp
src/server/libnxsrv/messages.mc

index 5c70e57..a1ac069 100644 (file)
@@ -114,6 +114,14 @@ BOOL InitIdTable(void)
                                                    DBGetFieldULong(hResult, 0, 0) + 1);
       DBFreeResult(hResult);
    }
+   hResult = DBSelect(g_hCoreDB, "SELECT max(id) FROM network_services");
+   if (hResult != NULL)
+   {
+      if (DBGetNumRows(hResult) > 0)
+         m_dwFreeIdTable[IDG_NETWORK_OBJECT] = max(m_dwFreeIdTable[IDG_NETWORK_OBJECT],
+                                                   DBGetFieldULong(hResult, 0, 0) + 1);
+      DBFreeResult(hResult);
+   }
    hResult = DBSelect(g_hCoreDB, "SELECT max(object_id) FROM deleted_objects");
    if (hResult != NULL)
    {
index 47a439e..28c0f9b 100644 (file)
@@ -84,7 +84,7 @@ BOOL NetworkService::SaveToDB(void)
    Lock();
 
    // Check for object's existence in database
-   sprintf(szQuery, "SELECT id FROM interfaces WHERE id=%ld", m_dwId);
+   sprintf(szQuery, "SELECT id FROM network_services WHERE id=%ld", m_dwId);
    hResult = DBSelect(g_hCoreDB, szQuery);
    if (hResult != 0)
    {
index d26ead7..b94a904 100644 (file)
@@ -491,6 +491,30 @@ BOOL LoadObjects(void)
       DBFreeResult(hResult);
    }
 
+   // Load network services
+   hResult = DBSelect(g_hCoreDB, "SELECT id FROM network_services");
+   if (hResult != 0)
+   {
+      NetworkService *pService;
+
+      dwNumRows = DBGetNumRows(hResult);
+      for(i = 0; i < dwNumRows; i++)
+      {
+         dwId = DBGetFieldULong(hResult, i, 0);
+         pService = new NetworkService;
+         if (pService->CreateFromDB(dwId))
+         {
+            NetObjInsert(pService, FALSE);  // Insert into indexes
+         }
+         else     // Object load failed
+         {
+            delete pService;
+            WriteLog(MSG_NETSRV_LOAD_FAILED, EVENTLOG_ERROR_TYPE, "d", dwId);
+         }
+      }
+      DBFreeResult(hResult);
+   }
+
    // Load templates
    hResult = DBSelect(g_hCoreDB, "SELECT id FROM templates");
    if (hResult != 0)
index 964e950..b558423 100644 (file)
@@ -452,4 +452,10 @@ Language=English
 Initialization of server module "%1" failed
 .
 
+MessageId=
+SymbolicName=MSG_NETSRV_LOAD_FAILED
+Language=English
+Failed to load network service object with id %1 from database
+.
+
 ;#endif