headline: RBN set/seeme
[spider.git] / perl / QSL.pm
index d10345eda2ebbf70166ca9c42d91beae4e1e9acc..ec5512216f563ffe9929bad57253d9d87851799f 100644 (file)
@@ -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;