blob: a75f7a01a6d4b7a550bde951fafb1ea09928a801 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
package MasterServer::Database::SQLite::dbCore;
use strict;
use warnings;
use Exporter 'import';
our @EXPORT = qw| database_login |;
################################################################################
## database_login
## login to the database with credentials provided in the config file.
## returns dbh object
################################################################################
sub database_login {
my $self = shift;
# check if database file exists
my $db_file = [split(':', $self->{dblogin}->[0])]->[2];
$db_file =~ s/dbname=//i;
unless (-e $db_file) {
# fatal error
$self->log("fatal", "Database file $db_file does not exist!");
# end program
$self->halt();
}
# create the dbi object
my $dbh = DBI->connect(@{$self->{dblogin}}, {PrintError => 0});
# verify that the database connected
if (defined $dbh) {
# log the event
$self->log("database","Connected to the SQLite database.");
# turn on error printing
$dbh->{printerror} = 1;
# synchronous read/writing to the sql file OFF. That means: when the script
# shuts down unexpectedly, i.e. because of power failure or a crash, changes
# to the database are NOT SAVED. However, if this setting is not turned OFF,
# it takes too long to write to the database, which means that new beacons,
# requests and servers cannot be processed. You don't have a choice, really..
$dbh->do("PRAGMA synchronous = OFF");
# return the dbi object for further use
return $dbh;
}
else {
# fatal error
$self->log("fatal", "$DBI::errstr!");
# end program
$self->halt();
}
# unreachable
return undef;
}
1;
|