keitaircメインレポジトリ
Révision | 5e1d0765eae05f40532e07e77f3ad7000741796c (tree) |
---|---|
l'heure | 2010-11-30 22:21:19 |
Auteur | ISHIKAWA Mutsumi <ishikawa@hanz...> |
Commiter | ISHIKAWA Mutsumi |
add get_pending method and cleanup
@@ -13,11 +13,13 @@ use warnings; | ||
13 | 13 | |
14 | 14 | use base qw(POE::Filter::HTTPD); |
15 | 15 | |
16 | -sub STRM() { 6 } # raw data buffer to build requests | |
16 | +my $_STRM_IDX = 6; | |
17 | +sub STRM() { $_STRM_IDX } # raw data buffer to build requests | |
17 | 18 | |
18 | 19 | sub new { |
19 | 20 | my $class = shift; |
20 | 21 | my $me = POE::Filter::HTTPD->new; |
22 | + $_STRM_IDX = $#{$me} + 1; | |
21 | 23 | $me->[STRM] = ''; |
22 | 24 | |
23 | 25 | return bless $me, $class; |
@@ -32,20 +34,32 @@ sub get_one_start { | ||
32 | 34 | sub get_one { |
33 | 35 | my ($me) = @_; |
34 | 36 | |
37 | + warn $me->[STRM],"\n"; | |
35 | 38 | my $req = $me->SUPER::get_one(); |
36 | 39 | |
37 | - if(defined $req->[0] | |
38 | - && $req->[0]->header('Upgrade') | |
39 | - && $req->[0]->header('Upgrade') eq 'WebSocket' | |
40 | - && $req->[0]->header('Connection') | |
41 | - && $req->[0]->header('Connection') eq 'Upgrade') { | |
42 | - warn $me->[STRM]; | |
43 | - if ($me->[STRM] =~ /\r\n\r\n(.{8})$/) { | |
44 | - warn $1; | |
45 | - $req->[0]->content($1); | |
40 | + if(defined $req->[0]) { | |
41 | + if ($req->[0]->header('Upgrade') | |
42 | + && $req->[0]->header('Upgrade') eq 'WebSocket' | |
43 | + && $req->[0]->header('Connection') | |
44 | + && $req->[0]->header('Connection') eq 'Upgrade') { | |
45 | + if ($me->[STRM] =~ /\r\n\r\n(.{8})$/) { | |
46 | + $req->[0]->content($1); | |
47 | + } | |
46 | 48 | } |
49 | + $me->[STRM] = ''; | |
47 | 50 | } |
48 | 51 | return $req; |
49 | 52 | } |
50 | 53 | |
54 | +sub get_pending { | |
55 | + my ($me) = @_; | |
56 | + if (length($me->[STRM])) { | |
57 | + my $buf = $me->[STRM]; | |
58 | + $me->[STRM] = ''; | |
59 | + return [$buf]; | |
60 | + } else { | |
61 | + return undef; | |
62 | + } | |
63 | +} | |
64 | + | |
51 | 65 | 1; |