]> git.pond.sub.org Git - empserver/commitdiff
Expire lost items at the update instead of continuously
authorMarkus Armbruster <armbru@pond.sub.org>
Wed, 10 Sep 2008 11:30:48 +0000 (07:30 -0400)
committerMarkus Armbruster <armbru@pond.sub.org>
Fri, 12 Sep 2008 22:05:58 +0000 (18:05 -0400)
Replace thread DeleteItems running delete_lostitems() by simple
function delete_old_lostitems(), and call it from update_main().

include/lost.h
include/server.h
src/lib/subs/lostsub.c
src/lib/update/main.c
src/server/lostitem.c [deleted file]
src/server/main.c

index 5cd62b7bc898bd8b1cc0cc8330336034ee25d0b2..6ceb1706f7ea44c45b7028c9d79b33f0eca31ede 100644 (file)
@@ -58,5 +58,6 @@ struct loststr {
 extern void lost_and_found(int, natid, natid, int, coord, coord);
 extern void makelost(short, natid, short, coord, coord);
 extern void makenotlost(short, natid, short, coord, coord);
+extern void delete_old_lostitems(void);
 
 #endif
index 4bc31cdb702da3ebab601815b5d63216d50f3525..d7d45fccba7b5f983b39226e201e252755753809 100644 (file)
@@ -53,7 +53,6 @@ int run_hook(char *, char *);
 int shutdown_initiate(int);
 
 /* thread entry points */
-void delete_lostitems(void *);
 void player_kill_idle(void *);
 
 #endif
index b254f8ab448004618d0c2f4b79bd292846a337b5..427ec5a5625a7da35f86b2ce53ef18fc9b1a6470 100644 (file)
@@ -36,6 +36,8 @@
 
 #include "file.h"
 #include "lost.h"
+#include "misc.h"
+#include "optlist.h"
 
 static int findlost(short, natid, short, coord, coord, int);
 
@@ -118,3 +120,20 @@ findlost(short type, natid owner, short id, coord x, coord y, int free)
 
     return -1;
 }
+
+void
+delete_old_lostitems(void)
+{
+    time_t expiry_time = time(NULL) - hours(lost_keep_hours);
+    struct loststr lost;
+    int i;
+
+    for (i = 0; getlost(i, &lost); i++) {
+       if (!lost.lost_owner)
+           continue;
+       if (lost.lost_timestamp >= expiry_time)
+           continue;
+       lost.lost_owner = 0;
+       putlost(i, &lost);
+    }
+}
index 93fa218b10931381fff78a3bd110ca3052be9a72..3a6663b786a182ff55fd17e064da9fe5debb3053 100644 (file)
@@ -173,6 +173,7 @@ update_main(void)
     unit_cargo_init();
     delete_old_announcements();
     delete_old_news();
+    delete_old_lostitems();
     /* Clear all the telegram flags */
     for (cn = 0; cn < MAXNOC; cn++)
        clear_telegram_is_new(cn);
diff --git a/src/server/lostitem.c b/src/server/lostitem.c
deleted file mode 100644 (file)
index 42cc480..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2008, Dave Pare, Jeff Bailey, Thomas Ruschak,
- *                           Ken Stevens, Steve McClure
- *
- *  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- *  ---
- *
- *  See files README, COPYING and CREDITS in the root of the source
- *  tree for related information and legal notices.  It is expected
- *  that future projects/authors will amend these files as needed.
- *
- *  ---
- *
- *  lostitem.c:  This deletes the old lost items
- * 
- *  Known contributors to this file:
- *     Steve McClure, 1997
- */
-
-#include <config.h>
-
-#include "empthread.h"
-#include "file.h"
-#include "lost.h"
-#include "optlist.h"
-#include "server.h"
-
-/*ARGSUSED*/
-void
-delete_lostitems(void *unused)
-{
-    time_t now;
-    struct loststr lost;
-    int n;
-    int ncnt;
-
-    while (1) {
-       time(&now);
-/*     logerror("Deleting lost items at %s", ctime(&now));*/
-       ncnt = 0;
-       for (n = 0; getlost(n, &lost); n++) {
-           if (!lost.lost_owner)
-               continue;
-           if (lost.lost_timestamp > (now - hours(lost_keep_hours)))
-               continue;
-           lost.lost_owner = 0;
-           putlost(n, &lost);
-           ncnt++;
-       }
-/*     logerror("Deleted %d lost items", ncnt, ctime(&now));*/
-       now = now + 900;        /* Every 15 minutes */
-       empth_sleep(now);
-    }
-    /*NOTREACHED*/
-}
index 03c5b1535ee062ed1ed72cecef13d48b8e4527d6..e487759a053815df96f41490596a495046889f84 100644 (file)
@@ -383,7 +383,6 @@ start_server(int flags)
 
     empth_create(player_accept, 50 * 1024, flags, "AcceptPlayers", 0);
     empth_create(player_kill_idle, 50 * 1024, flags, "KillIdle", 0);
-    empth_create(delete_lostitems, 50 * 1024, flags, "DeleteItems", 0);
 
     market_init();
     update_init();