/[Frey]/trunk/lib/Frey/Session.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/lib/Frey/Session.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 569 - (show annotations)
Thu Nov 27 22:10:49 2008 UTC (15 years, 5 months ago) by dpavlin
File size: 1304 byte(s)
open DBM::Deep just once
1 package Frey::Session;
2 use Moose::Role;
3
4 with 'Frey::Path';
5
6 __PACKAGE__->mkbasepath( 'var/session/something.db' );
7
8 use DBM::Deep;
9 use Data::Dump qw/dump/;
10 use Time::HiRes qw/time/;
11
12 our $usage = DBM::Deep->new( 'var/session/usage.db' );
13 has 'usage' => (
14 documentation => 'Track usage of classes for ClassBrowser',
15 is => 'rw',
16 isa => 'DBM::Deep',
17 lazy => 1,
18 default => sub {
19 $usage
20 },
21 );
22
23 our $bugs = DBM::Deep->new( 'var/session/bugs.db' );
24 has 'bugs' => (
25 documentation => 'Track bugs within Frey',
26 is => 'rw',
27 isa => 'DBM::Deep',
28 lazy => 1,
29 default => sub {
30 $bugs
31 },
32 );
33 sub as_data {
34 my ($self) = @_;
35 {
36 usage => $self->session_dump( $self->usage ),
37 bugs => $self->session_dump( $self->bugs ),
38 }
39 }
40
41 sub session_dump {
42 my ($self,$db) = @_;
43 my $data;
44
45 my $key = $db->first_key();
46 while ($key) {
47 $data->{$key} = $db->get($key);
48 $key = $db->next_key($key);
49 }
50
51 return $data;
52 }
53
54 sub TODO {
55 my ( $self, $what ) = @_;
56 eval {
57 $self->bugs = {} unless defined $self->bugs; # bootstrap
58 warn "TODO: $what" unless defined $self->bugs->{TODO}->{ $what };
59
60 my ( $package, $path, $line ) = caller;
61
62 $self->bugs->{TODO}->{ $what } = {
63 last_occured => time,
64 'package' => $package,
65 path => $path,
66 line => $line,
67 }
68 };
69 warn "TODO ERROR: $@\n$what" if $@;
70 }
71
72 1;

  ViewVC Help
Powered by ViewVC 1.1.26