aboutsummaryrefslogtreecommitdiff
path: root/lib/MasterServer/Database/SQLite/dbMaintenance.pm
diff options
context:
space:
mode:
authorDarkelarious <darkelarious@333networks.com>2016-11-20 19:30:58 +0100
committerDarkelarious <darkelarious@333networks.com>2016-11-20 19:30:58 +0100
commit702d1898b012d6d992d66b996508610890bf2963 (patch)
tree9556d890c4afdb7062f5b63277aa6b3d5c5d9d03 /lib/MasterServer/Database/SQLite/dbMaintenance.pm
parentc3f8d65a4fb1f5674557ee67cf7f74369df86ad1 (diff)
downloadMasterServer-Perl-702d1898b012d6d992d66b996508610890bf2963.tar.gz
MasterServer-Perl-702d1898b012d6d992d66b996508610890bf2963.zip
Restore SQLite support
Diffstat (limited to 'lib/MasterServer/Database/SQLite/dbMaintenance.pm')
-rwxr-xr-xlib/MasterServer/Database/SQLite/dbMaintenance.pm40
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/MasterServer/Database/SQLite/dbMaintenance.pm b/lib/MasterServer/Database/SQLite/dbMaintenance.pm
new file mode 100755
index 0000000..06a8db4
--- /dev/null
+++ b/lib/MasterServer/Database/SQLite/dbMaintenance.pm
@@ -0,0 +1,40 @@
+package MasterServer::Database::SQLite::dbMaintenance;
+
+use strict;
+use warnings;
+use Exporter 'import';
+
+our @EXPORT = qw| delete_old_pending
+ remove_pending |;
+
+################################################################################
+## delete unresponsive servers from the pending list
+## where the server is unresponsive for more than 1 hour
+################################################################################
+sub delete_old_pending {
+ my ($self) = shift;
+
+ # remove servers
+ my $u = $self->{dbh}->do(
+ "DELETE FROM pending
+ WHERE added < datetime(?, 'unixepoch')", undef, time-3600);
+
+ # notify
+ $self->log("delete", "Removed $u entries from pending.") if ($u > 0);
+}
+
+################################################################################
+## Remove an entry from the pending list. Returns 0 if removed or -1 in case
+## of error(s).
+################################################################################
+sub remove_pending {
+ my ($self, $id) = @_;
+
+ # if address is in list, update the timestamp
+ my $u = $self->{dbh}->do("DELETE FROM pending WHERE id = ?", undef, $id);
+
+ # notify
+ $self->log("delete", "removed pending id $id from pending") if ($u > 0);
+}
+
+1;