X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FQSL.pm;h=ec5512216f563ffe9929bad57253d9d87851799f;hb=cc49b8f8c2ec3a975c7ace3f5bd8679580288406;hp=d10345eda2ebbf70166ca9c42d91beae4e1e9acc;hpb=431c8a14cdecd0ec455b6619380687dbe84e2a35;p=spider.git diff --git a/perl/QSL.pm b/perl/QSL.pm index d10345ed..ec551221 100644 --- a/perl/QSL.pm +++ b/perl/QSL.pm @@ -13,7 +13,7 @@ use DXUtil; use DB_File; use DXDebug; use Prefix; -use JSON; +use DXJSON; use Data::Structure::Util qw(unbless); use vars qw($qslfn $dbm $maxentries); @@ -31,7 +31,7 @@ sub init my $mode = shift; my $ufn = localdata("$qslfn.v1j"); - $json = JSON->new->canonical(1); + $json = DXJSON->new; Prefix::load() unless Prefix::loaded(); @@ -47,6 +47,7 @@ sub init sub finish { + dbg("DXQSL finished"); $dbm->sync; undef $dbm; untie %u; @@ -120,6 +121,7 @@ sub get return decode($value); } + sub put { return unless $dbm; @@ -138,27 +140,21 @@ sub remove_files # thaw the user sub decode { - my $s = shift; - my $ref; - eval { $ref = $json->decode($s) }; - if ($ref && !$@) { - return bless $ref, 'QSL'; - } - return undef; + return $json->decode($_[0], __PACKAGE__); } # freeze the user sub encode { - my $ref = shift; - unbless($ref); - my $s; - - eval {$s = $json->encode($ref) }; - if ($s && !$@) { - bless $ref, 'QSL'; - return $s; - } + return $json->encode($_[0]); +} + +sub END +{ + if ($dbm) { + dbg "DXQSL ENDing"; + finish(); + } } 1;