… | |
… | |
76 | |
76 | |
77 | use Storable; |
77 | use Storable; |
78 | use base "Exporter"; |
78 | use base "Exporter"; |
79 | |
79 | |
80 | our $VERSION = '0.2'; |
80 | our $VERSION = '0.2'; |
81 | our @EXPORT = qw(thaw freeze nfreeze blocking_freeze blocking_nfreeze); |
81 | our @EXPORT = qw(thaw freeze nfreeze blocking_thaw blocking_freeze blocking_nfreeze); |
82 | |
82 | |
83 | my $lock = new Coro::Semaphore; |
83 | my $lock = new Coro::Semaphore; |
84 | |
84 | |
85 | sub guard { |
85 | sub guard { |
86 | $lock->guard |
86 | $lock->guard |
… | |
… | |
108 | |
108 | |
109 | open my $fh, ">:via(CoroCede)", \my $buf |
109 | open my $fh, ">:via(CoroCede)", \my $buf |
110 | or die "cannot open pst via CoroCede: $!"; |
110 | or die "cannot open pst via CoroCede: $!"; |
111 | Storable::nstore_fd $_[0], $fh; |
111 | Storable::nstore_fd $_[0], $fh; |
112 | $buf |
112 | $buf |
|
|
113 | } |
|
|
114 | |
|
|
115 | sub blocking_thaw { |
|
|
116 | my $guard = $lock->guard; |
|
|
117 | |
|
|
118 | open my $fh, "<", \$_[0] |
|
|
119 | or die "cannot open pst: $!"; |
|
|
120 | Storable::fd_retrieve $fh |
113 | } |
121 | } |
114 | |
122 | |
115 | sub blocking_freeze { |
123 | sub blocking_freeze { |
116 | my $guard = $lock->guard; |
124 | my $guard = $lock->guard; |
117 | |
125 | |