← Index
NYTProf Performance Profile   « line view »
For nd2: #2 manager: init
  Run on Thu May 2 17:38:58 2019
Reported on Thu May 2 17:40:49 2019

Filename/appl/netdisco/perl5/lib/perl5/Dancer/SharedData.pm
StatementsExecuted 33 statements in 74µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
331167µs67µsDancer::SharedData::::requestDancer::SharedData::request
0000s0sDancer::SharedData::::BEGINDancer::SharedData::BEGIN
0000s0sDancer::SharedData::::headersDancer::SharedData::headers
0000s0sDancer::SharedData::::reset_allDancer::SharedData::reset_all
0000s0sDancer::SharedData::::reset_responseDancer::SharedData::reset_response
0000s0sDancer::SharedData::::reset_timerDancer::SharedData::reset_timer
0000s0sDancer::SharedData::::responseDancer::SharedData::response
0000s0sDancer::SharedData::::sessionsDancer::SharedData::sessions
0000s0sDancer::SharedData::::timerDancer::SharedData::timer
0000s0sDancer::SharedData::::varDancer::SharedData::var
0000s0sDancer::SharedData::::varsDancer::SharedData::vars
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Dancer::SharedData;
2our $AUTHORITY = 'cpan:SUKRIA';
3# ABSTRACT: Shared-data singleton for Dancer
4$Dancer::SharedData::VERSION = '1.3512';
5use strict;
6use warnings;
7use Dancer::Timer;
8use Dancer::Response;
9use Dancer::Factory::Hook;
10
11Dancer::Factory::Hook->instance->install_hooks(
12 qw/on_reset_state/
13);
14
15# shared variables
16my $vars = {};
17sub vars {$vars}
18
19sub var {
20 my ($class, $key, $value) = @_;
21 $vars->{$key} = $value if (@_ == 3);
22 return $vars->{$key};
23}
24
25# request headers
26my $_headers;
27sub headers { (@_ == 2) ? $_headers = $_[1] : $_headers }
28
29# request singleton
30my $_request;
313374µ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
sub request { (@_ == 2) ? $_request = $_[1] : $_request }
32
33# current response
34my $_response;
35sub response {
36 if (@_ == 2) {
37 $_response = $_[1];
38 }else{
39 $_response = Dancer::Response->new() if !defined $_response;
40 return $_response;
41 }
42}
43sub reset_response { $_response = undef }
44
45# sessions singleton
46my $_sessions;
47sub sessions { (@_ == 2) ? $_sessions = $_[1] : $_sessions }
48
49# request timer
50my $_timer;
51sub timer { $_timer ||= Dancer::Timer->new }
52sub reset_timer { $_timer = Dancer::Timer->new }
53
54# purging accessor
55sub 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__