Little testing for now, but is very simple the patch... I placed in a POE program here, and it's running for a couple of hours now without problems.
Also, it's backwards compatible. Your old code will still work no changes.
It would be great to see this in the next version of POE... :)
Best regards,
--On 23 de Novembro de 2002 14:44 -0600 Rob Fugina <[EMAIL PROTECTED]> wrote:
I'll ditto that -- I've had the same issue with PoCo::Client::TCP. In several occasions while using it within a new component, having to use inline subs as closures to get parameters passed into the new session. I've gone to the docs several times looking for a Heap parameter, and not finding one.I'm also a relative begginer to POE, so let me know if there's some other way I should be doing things... Rob On Sat, Nov 23, 2002 at 12:34:37PM +0000, Pedro Melo CUNHA wrote:Howdy, I'm writing SMTP client component. It's working ok, but "it feels odd". I'm using the PoCo::Client::DNS framework: you spawn a MUA session, other sessions can send_mail event's to it, and get back the results via postback's. So far so good. But being a lazy person, I wrote the SMTP client with PoCo::Component::Client::TCP. The problem is that this component does not lend itself easilly to reuse by other components. I need to stuff into the Client::TCP head the session_id of the original sender, or at least, the session id of the MUA, but there is no way to do it, so it seem's. Rigth now, I'm using closures so that the ClientDisconnect event can find the MUA session_id/alias. Basically, my handler_send_mail looks like this: sub handle_send_mail { my ($kernel, $heap, $sender) = @_[ KERNEL, HEAP, SENDER ]; my %a = @_[ ARG0..$#_ ]; my $sender_id = $sender->ID; $heap->{postback}{$sender_id} = $sender->postback( $a{reply_to}, %a ); my $server = $a{smtp_server} || $heap->{server}; my $port = $a{smtp_port} || $heap->{port}; my $message = $a{message}; my $alias = $heap->{alias}; POE::Component::Client::TCP->new( RemoteAddress => $server, RemotePort => $port, Disconnected => sub { my ($kernel, $heap) = @_[ KERNEL, HEAP ]; $kernel->post( $alias => result => $sender_id => $heap->{result} ); }, ServerInput => sub { my ($heap, $data) = @_[ HEAP, ARG0 ]; # SMTP protocol here... }, ); } Instead, I would like to be able to pass a Args or a Heap parameter to Client::TCP that I could see in my handler's... I'm a beginer in POE, so I migth be on the wrong path... If the Args or Heap argument to Client::TCP is interesting for someone, I can send you a patch. Best regards, -- Pedro Melo Cunha - <[EMAIL PROTECTED]> Novis Telecom, S.A. - Dir. Rede - ISP <http://www.novis.pt/> Edif�cio Novis - Estrada da Outurela, 118 - 2795-606 Carnaxide tel: +351 21 0104340 - fax: +351 21 0104301-- Rob Fugina, Systems Guy [EMAIL PROTECTED] -- http://www.geekthing.com My firewall filters MS Office attachments. Give a man a fish and he will eat for a day. Teach him to fish and he'll sit in a boat and drink beer all day.
-- Pedro Melo Cunha - <[EMAIL PROTECTED]> Novis Telecom, S.A. - Dir. Rede - ISP <http://www.novis.pt/> Edif�cio Novis - Estrada da Outurela, 118 - 2795-606 Carnaxide tel: +351 21 0104340 - fax: +351 21 0104301
TCP.pm.diff
Description: Binary data
