| Filename | /appl/netdisco/perl5/lib/perl5/Dancer/SharedData.pm |
| Statements | Executed 33 statements in 74µs |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 33 | 1 | 1 | 67µs | 67µs | Dancer::SharedData::request |
| 0 | 0 | 0 | 0s | 0s | Dancer::SharedData::BEGIN |
| 0 | 0 | 0 | 0s | 0s | Dancer::SharedData::headers |
| 0 | 0 | 0 | 0s | 0s | Dancer::SharedData::reset_all |
| 0 | 0 | 0 | 0s | 0s | Dancer::SharedData::reset_response |
| 0 | 0 | 0 | 0s | 0s | Dancer::SharedData::reset_timer |
| 0 | 0 | 0 | 0s | 0s | Dancer::SharedData::response |
| 0 | 0 | 0 | 0s | 0s | Dancer::SharedData::sessions |
| 0 | 0 | 0 | 0s | 0s | Dancer::SharedData::timer |
| 0 | 0 | 0 | 0s | 0s | Dancer::SharedData::var |
| 0 | 0 | 0 | 0s | 0s | Dancer::SharedData::vars |
| Line | State ments |
Time on line |
Calls | Time in subs |
Code |
|---|---|---|---|---|---|
| 1 | package Dancer::SharedData; | ||||
| 2 | our $AUTHORITY = 'cpan:SUKRIA'; | ||||
| 3 | # ABSTRACT: Shared-data singleton for Dancer | ||||
| 4 | $Dancer::SharedData::VERSION = '1.3512'; | ||||
| 5 | use strict; | ||||
| 6 | use warnings; | ||||
| 7 | use Dancer::Timer; | ||||
| 8 | use Dancer::Response; | ||||
| 9 | use Dancer::Factory::Hook; | ||||
| 10 | |||||
| 11 | Dancer::Factory::Hook->instance->install_hooks( | ||||
| 12 | qw/on_reset_state/ | ||||
| 13 | ); | ||||
| 14 | |||||
| 15 | # shared variables | ||||
| 16 | my $vars = {}; | ||||
| 17 | sub vars {$vars} | ||||
| 18 | |||||
| 19 | sub var { | ||||
| 20 | my ($class, $key, $value) = @_; | ||||
| 21 | $vars->{$key} = $value if (@_ == 3); | ||||
| 22 | return $vars->{$key}; | ||||
| 23 | } | ||||
| 24 | |||||
| 25 | # request headers | ||||
| 26 | my $_headers; | ||||
| 27 | sub headers { (@_ == 2) ? $_headers = $_[1] : $_headers } | ||||
| 28 | |||||
| 29 | # request singleton | ||||
| 30 | my $_request; | ||||
| 31 | 33 | 74µs | # spent 67µs within Dancer::SharedData::request which was called 33 times, avg 2µs/call:
# 33 times (67µs+0s) by Dancer::Logger::Abstract::format_message at line 72 of Dancer/Logger/Abstract.pm, avg 2µs/call | ||
| 32 | |||||
| 33 | # current response | ||||
| 34 | my $_response; | ||||
| 35 | sub response { | ||||
| 36 | if (@_ == 2) { | ||||
| 37 | $_response = $_[1]; | ||||
| 38 | }else{ | ||||
| 39 | $_response = Dancer::Response->new() if !defined $_response; | ||||
| 40 | return $_response; | ||||
| 41 | } | ||||
| 42 | } | ||||
| 43 | sub reset_response { $_response = undef } | ||||
| 44 | |||||
| 45 | # sessions singleton | ||||
| 46 | my $_sessions; | ||||
| 47 | sub sessions { (@_ == 2) ? $_sessions = $_[1] : $_sessions } | ||||
| 48 | |||||
| 49 | # request timer | ||||
| 50 | my $_timer; | ||||
| 51 | sub timer { $_timer ||= Dancer::Timer->new } | ||||
| 52 | sub reset_timer { $_timer = Dancer::Timer->new } | ||||
| 53 | |||||
| 54 | # purging accessor | ||||
| 55 | sub reset_all { | ||||
| 56 | my ($self, %options) = @_; | ||||
| 57 | my $is_forward = exists($options{reset_vars}) && ! $options{reset_vars}; | ||||
| 58 | |||||
| 59 | Dancer::Factory::Hook->execute_hooks('on_reset_state', $is_forward); | ||||
| 60 | |||||
| 61 | if (!$is_forward) { | ||||
| 62 | $vars = {}; | ||||
| 63 | } | ||||
| 64 | undef $_sessions; | ||||
| 65 | undef $_request; | ||||
| 66 | undef $_headers; | ||||
| 67 | reset_timer(); | ||||
| 68 | reset_response(); | ||||
| 69 | } | ||||
| 70 | |||||
| 71 | 'Dancer::SharedData'; | ||||
| 72 | |||||
| 73 | __END__ |