logo       
Google Custom Search
    AddThis Social Bookmark Button

Re: POE newbie question: msg#00054

Subject: Re: POE newbie question
P Dobranski wrote:
POE::Kernel::yield is sort of a shortcut for 'post'. You 'yield' an event in the current session.
It is the same as 'post'ing the event to the current session.

$kernel->yield('some_event_handler');

is roughly the same as
$kernel->post($my_session, 'some_event_handler');

(assuming both statements happen in the same session).

select_read/select_write allow you to get events when a file descriptor becomes ready to read or write without you having to manage your own select() loops.

On 2/22/07, Fei Liu <feiliu@xxxxxxxxxxxxxxx> wrote:

Hi group, just wondering what's the difference between
POE::Kernel::select_read/write method and POE::Kernel::yield method? How
should I use select_read/select_write? Do they do anything special about
the events that they select? Thanks,

Fei

Thanks for your reply. I was reading Rocco's tutorial (http://poe.perl.org/?Evolution_of_a_POE_Server) on POE and my question came up when he first introduced POE framework to replace the original non-blocking tcp echo server. In the example no Wheel or Component::Server::TCP were used, it was basic POE::Session.

POE::Session->create
 ( inline_states =>
     { _start => \&server_start,
       event_accept => \&server_accept,
       event_read   => \&client_read,
       event_write  => \&client_write,
       event_error  => \&client_error,
     }
 );

sub server_start {
   my $server = IO::Socket::INET->new
     ( LocalPort => 12345,
       Listen => 10,
       Reuse  => "yes",
     ) or die "can't make server socket: $@\n";

   $_[KERNEL]->select_read( $server, "event_accept" );
}

Here it seems select_read works sort of like yield, doesn't it? It yields to event_accept handler? Quote 'The _start handler creates the server socket and allocates its event generator with select_read()", what's a event generator and what does it do?

Another thing confusing me here is that there seems to be a total of one session in this echo server implementation, how can it handle mutliple clients?

Sorry for so many questions, I can use POE just fine but I want to understand what's going on under the hood.

Fei





Try Searching:
servers, voip, java, networking, microsoft ...
<Prev in Thread] Current Thread [Next in Thread>