From 7441e2499fb9aefa46f518a0e783e765e3cde09a Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 10 Sep 2008 07:30:48 -0400 Subject: [PATCH] Expire lost items at the update instead of continuously Replace thread DeleteItems running delete_lostitems() by simple function delete_old_lostitems(), and call it from update_main(). --- include/lost.h | 1 + include/server.h | 1 - src/lib/subs/lostsub.c | 19 ++++++++++++ src/lib/update/main.c | 1 + src/server/lostitem.c | 69 ------------------------------------------ src/server/main.c | 1 - 6 files changed, 21 insertions(+), 71 deletions(-) delete mode 100644 src/server/lostitem.c diff --git a/include/lost.h b/include/lost.h index 5cd62b7bc..6ceb1706f 100644 --- a/include/lost.h +++ b/include/lost.h @@ -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 diff --git a/include/server.h b/include/server.h index 4bc31cdb7..d7d45fccb 100644 --- a/include/server.h +++ b/include/server.h @@ -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 diff --git a/src/lib/subs/lostsub.c b/src/lib/subs/lostsub.c index b254f8ab4..427ec5a56 100644 --- a/src/lib/subs/lostsub.c +++ b/src/lib/subs/lostsub.c @@ -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); + } +} diff --git a/src/lib/update/main.c b/src/lib/update/main.c index 93fa218b1..3a6663b78 100644 --- a/src/lib/update/main.c +++ b/src/lib/update/main.c @@ -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 index 42cc48082..000000000 --- a/src/server/lostitem.c +++ /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 - -#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*/ -} diff --git a/src/server/main.c b/src/server/main.c index 03c5b1535..e487759a0 100644 --- a/src/server/main.c +++ b/src/server/main.c @@ -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(); -- 2.43.0