On Fri, Jun 13, 2003 at 06:40:07PM +0200, Bruno Boettcher wrote:
> On Fri, Jun 13, 2003 at 11:22:44AM -0400, Rocco Caputo wrote:
> > If messages are being sent but not received, you can easily find them
> > by setting POE::Kernel::ASSERT_EVENTS, like so:
> >
> > sub POE::Kernel::ASSERT_EVENTS () { 1 }
> > use POE;
> >
> > It's important to set ASSERT_EVENTS before using POE.pm (or POE::Kernel)
> > so that the module will see the value when it loads.
> uhm what's that supposed to do? doens't change anything in my script?
It makes the attempted delivery of a message to a non-existent session
an error.
You may also want to set $session->option(default => 1) in your
sessions, to make the attempt to deliver a message to a non-existent
handler an error.
> > Server::Web and Client::IRC read configuration options and create their
> > objects and sessions. The configuration includes aliases for each
> > module, and the modules are designed to talk to each-other using those
> > aliases.
> and how do you set up those aliases?
Either through Alias parameters for component constructors or by calling
$kernel->alias_set("alias") in _start.
[...]
> > It's assumed that you assigned the aliases to ecah session, so you know
> > what they are.
> ??? when i try to add an Alias => "somename" to the create method of
> session, i get a compile error?
See above.
> > You should use POE::Wheel::ReadLine or Term::Visual. Both work without
> > blocking your program. Term::Visual is especially nice.
> ok! switched to POE::Wheel::ReadLine (installed by default...)
>
> in the meantime another problem arouse....
>
> the heap is different for each session, right?
> now, i have on one side a TCP connection and on another a session with
> the shell implementation that needs to send the info through that
> pipe... is it safe to exchange the ref to the server ?
It is possible, but it is not very "safe". If you do not clean up
session references properly, your program will leak memory (and probably
other things).
It's better to pass around $session->ID instead. These are like weak
session references. You can use them as destinations for post() and
other things.
> hmmm now on:
> my $task = POE::Wheel::Run->new
> (�
> �������� #Program => runShell(@_),
> �������� #Program => &runShell,
> �������� Program => &POE::Component::Leve::leveShell::runShell,
You are saying that the Program is the return value of the function
POE::Component::Leve::leveShell::runShell(). Really you want it to be a
reference to the function:
Program => \&runShell,
Program => \&POE::Component::Leve::leveShell::runShell,
> and how do i pass the runshell call its args? i need the usual
> @_[OBJECT, KERNEL etc] input....
The child program is not run like the rest of POE. It is called only
once, with the parameters given in POE::Wheel::Run's ProgramArgs, and
the child process will exit when it returns.
-- Rocco Caputo - [EMAIL PROTECTED] - http://poe.perl.org/