?? httpb.pm
字號:
package PunJab::HTTPB;use strict;use warnings;use POE;use POE::Filter::XML;use POE::Filter::XML::Node;use POE::Filter::XML::NS qw/ :JABBER :IQ /;use POE::Filter::XML::Utils;use PunJab::Util;use PunJab::Session;use PunJab::Server::HTTPB;use POSIX qw(strftime);use Digest::SHA1;use Digest::MD5 qw(md5 md5_hex md5_base64);use Data::Uniqid qw ( suniqid uniqid luniqid );my %help;sub new { shift; my $config = shift; $config->{'type'} = "http_bind"; PunJab::Server::HTTPB->new($config,'http_binding','input','output'); POE::Session->create ( inline_states => { _start => sub { my $kernel = $_[KERNEL]; if ($config->{debug}>0) { &debug("HTTPB Session Started\n"); } $kernel->alias_set("http_binding"); }, session_register => sub { my $sid = $_[ARG0]; $punjab_session->register($sid); $punjab_session->logged_in($sid,1); $punjab_session->activity($sid,time()); if ($_[HEAP]->{'CONFIG'}->{debug} > 1) { &debug(" HTTPB Session $sid registered"); } }, session_unregister => sub { my $sid = $_[ARG0]; $punjab_session->unregister($sid); if ($_[HEAP]->{'CONFIG'}->{debug} > 1) { &debug(" HTTPB Session $sid unregistered"); } }, input => \&input, output => \&output, check_timeout => \&check_timeout, check_timeout_continue => \&check_timeout_continue, }, heap => { CONFIG => $config }, options => { debug => $config->{'debug'}, trace => $config->{'debug'} } ); return undef;}sub input() { my ($kernel,$session,$heap, $body, $event_id) = @_[KERNEL, SESSION, HEAP, ARG0 .. ARG1]; &debug("HTTPB INPUT"); &debug($body->to_str()); }sub output(){}sub check_timeout(){ my ($kernel,$session,$heap) = @_[KERNEL, SESSION, HEAP]; my @keys = keys %{$punjab_session->registry()}; $heap->{'session_keys'} = \@keys; $kernel->yield('check_timeout_continue');}sub check_timeout_continue(){ my ($kernel,$session,$heap) = @_[KERNEL, SESSION, HEAP]; my $ctime = time(); my $s = pop(@{$heap->{'session_keys'}}); if (not defined $s) { my $count = keys %{$punjab_session->registry()}; if ($count > 0) { $kernel->delay('check_timeout', $heap->{'CONFIG'}->{'idle_check'}); } return; } if (($ctime - $punjab_session->activity($s))>=$heap->{'CONFIG'}->{'timeout'}) { $kernel->post($s,'disconnect'); $punjab_session->unregister($s); } $kernel->yield('check_timeout_continue');}1;__END__
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -