[Perl Other] POE 中的 Kernel Session 之类理解和使用

Dec 30th, 2009

转载本站文章请注明,转载自:扶凯[http://www.php-oa.com]

本文链接: http://www.php-oa.com/2009/12/30/poe-kernel-session.html

POE::Kernel中的 session 管理

当一个poe的session建立时它会成为当前session的子session.那个当前的session就成了父,这就和UNIX的进程一样.
每一个session都是有一个父的就算第一个session也是一样他的父是指的poe内核实例
在poe中有很多信号可以对子session进行控制.
poe内核提供了4种默认的session的管理方法._start, _stop, _parent and _child.
下面来拿_child来讲.
  1. _child 包含一些信息从@_,典型地如ARG0, ARG1 and ARG2,但在不同的poe::Session类中不一定总是这样.
  2. ARG0包含一个字符描述对child的session所发生的改变.’create’ 指子session已经创建, ‘gain’ 指子session得到一个另外的session, or ‘lose’指子session退出.
  3. ARG1是对child的session的引用
  4. ARG2 在 ‘create’时, ARG2保存着 child session调用的 _start 处理的值. 同样,在lose(子session退出.)时, ARG2 保存着_stop 的值

POE Session

事情处理
– $kernel->yield(‘eventname’, @args);  #只能操作当前的 session
– $kernel->post($session, ‘eventname’, @args);
– $kernel->call($session, ‘eventname’, @args);

其它的事件处理
Immediate, not via scheduler
– $kernel->delay_set(‘event’, $seconds, @args)
– $kernel->alarm_set(‘event’, $epochtime,
@args);

POE Session 的公共方法

 

postback EVENT_NAME, EVENT_PARAMETERS

         它会返回一个 pose 事件到目标 Session 匿名的引用.

在use POE::Kernel; 时,默认会导出$poe_kernel的全局变量,我们可以来使用 get_heap 取得session中的heap的引用,它就是对象session的$_[HEAP].
调用方法:
$session->get_heap();
get_active_session取得kernel中所有的活的session出来
调用方法:
$kernel->get_active_session();
 

POE Kernel 的状态访问

 
  取得当前运行中的 Session 的引用,相当于$_[SESSION]
$poe_kernel->get_active_session;
  取得当前运行中的事件名,如果事件当前没有就还回空,相当于$_[STATE].

$poe_kernel->get_active_event;

取得 POE 事件队列中还有多少事件需要调用

$poe_kernel->get_event_count

取得 POE 事件中下次事件调用的时间

$poe_kernel->get_next_event_time

取得 POE 事件中下次来调用事件的 POE::Loop 类名

$poe_kernel->poe_kernel_loop

 

Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪 ViVi 365Key 网摘 天极网摘 和讯网摘 博拉网 POCO 网摘 饭否 QQ 书签 Digbuzz 我挖网 Mister Wong
Tags: ,
No comments yet.