⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpb.pm

📁 Punjab is a jabber XMLRPC/SOAP/REST client. It is a xmlrpc, soap, or REST server that allows for p
💻 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 + -