From: Mike S. <MikeSchroeder@DonorWare.com> - 2005-05-05 19:13:32
|
My colleague (Ed Heil) put together a couple of simpler examples today (attached tarball). Here are his comments: There are two versions here, minimalpoe.pl and minimal2poe.pl. Both implement the same basic functionality: they open two frames, each with a textbox and a button. There is a POE session running in the background that writes text to the textboxes every few seconds. The buttons also write text to the textboxes. This demonstrates that the Wx event loop and the POE event loop are both operating at the same time, which is what it's all about. In the first version, there is one single poe session, which has access to the frames via a package level variable @frames. The frames are careful to add themselves to the package variable when they are created, and remove themselves when they are closed. The POE session is smart enough to stop emitting events when there are no frames referenced by the variable any more. This demonstrates that you don't *have* to have any particular correspondence between POE sessions and Wx frames, at all. POE sessions and frames can both exist in your application, each doing their own thing, sharing a mutual event loop, without knowing or caring about each other's existence except via a mechanism you define (in this case, the @frames variable). In the second version, a new session is created for each frame, and those sessions do their own work independently of each other. The sessions use 'object states' which map methods to states, and provide a reference to the object from within a given state. The frames shut their sessions down when they close. This demonstrates how to tie POE sessions to frames if you want to. Martin Bower wrote: >Hi, > >This is my first app with POE, it seems a logical progression from >Net::EasyTCP (which is excellent btw), and adds more functionality. > >Net::EasyTCP can't handle setcallbacks for the client, hence the move to >POE. > >I have a very simple client and server, which connect to each other, and >subsequent clients can see those connections as well, but I am slightly >confused with Loop, and how to set it up. The example included with >POE::Loop::Wx is fairly complex (for me), so a minimal version would be >ideal for starters. > >I don't really want to post my existing wx/Net::EasyTCP example, as the >client is around 1000 lines of code. It simply issues commands to a server, >waits for a return (text or html), then displays it. So it's ideal to >control applications without the need to log into a server, but it's >incapable of receiving adhoc messages. > >Once I have a basic minimal wx chat client/server, I'll post them back as an >example. > >Thanks > >Martin > >-----Original Message----- >From: Mike Schroeder [mailto:MikeSchroeder@DonorWare.com] >Sent: 05 May 2005 15:50 >To: Martin Bower >Cc: wxp...@li... >Subject: Re: [wxperl-users] do I need to use POE::Loop::Wx ? > >If you want the Wx loop and the POE loop to co-exist in the same >process, then you need to use POE (to the best of my knowledge). > >I don't use Net::EasyTCP, but I looked at the docs for it, and the whole >idea of setcallback() is *kinda* the same as POE. In POE, you will need >to have a Session for PoCoCl::TCP which you configure for various states >-- from the POD, it looks like the ServerInput state gets called every >time you receive something -- I would start by trying to put your code >in there. > >Is this your first POE app? If so, you may want to write a POE >proof-of-concept to make sure you know what POE is doing before trying >to marry Wx and POE. The two are powerful, but it helps to understand a >bit each before combining them (speaking from experience). > >I'll try and send along a new minimalpoe.pl example later today to show >how Wx and POE can cooperate. Feel free to send along an example of >what you are trying to do... > >Mike Schroeder >MikeSchroeder@DonorWare.com >http://www.donorware.com > > >****************************************************************************** >The information in this document, including any attachments or subsequent >correspondence originating from this email address ("email"), is confidential >and may be legally privileged. It is intended solely for the addressee. >However, it may be intercepted by the system controller at Bankgesellschaft >Berlin AG for the purposes of monitoring communications relevant to the system >controller's business. Access to this email by anyone else is unauthorised. > >If you have received this email in error, please notify the Sender immediately >by telephone. Please also delete this email from your computer. > >Any form of reproduction, dissemination, copying, disclosure, modification, >distribution or publication of this email is prohibited without the prior >consent of Bankgesellschaft Berlin AG. If you are not the intended recipient, >any action taken or omitted to be taken in reliance of this email is strictly >prohibited and may be unlawful. Bankgesellschaft Berlin AG accepts no >liability for the consequences of any person acting, or refraining from action >in reliance of this email >****************************************************************************** > > >------------------------------------------------------- >This SF.Net email is sponsored by: NEC IT Guy Games. >Get your fingers limbered up and give it your best shot. 4 great events, 4 >opportunities to win big! Highest score wins.NEC IT Guy Games. Play to >win an NEC 61 plasma display. Visit http://www.necitguy.com/?r=20 >_______________________________________________ >wxperl-users mailing list >wxp...@li... >https://lists.sourceforge.net/lists/listinfo/wxperl-users > > -- Mike Schroeder 877-751-3300 x401 MikeSchroeder@DonorWare.com http://www.donorware.com |