Greetings all. I'm writing a POE server using POE::Component::Server::SOAP (which in turn uses POE::Component::Server::HTTP). The problem is I want to bind the server to a single address, and as far as I can tell, this is not directly supported. P::C::S::TCP supports an 'Address' parm, but ::SOAP and ::HTTP don't allow for this to be passed through to the ::TCP constructor.
Would patches to address this be useful to other people? I'm also going to try to address whatever causes this error to be emitted when ::HTTP is used: The _signal event is deprecated. Please use sig() to register a signal handler at foo.pl line 5 I'm tempted to use Class::Container in doing this, but I'm not sure if that would make the components 'tainted' in some way. If you read the description of that module, the situation it describes is a perfect match for what is going on in ::TCP -> ::HTTP -> ::SOAP: > Suppose you've got a class called Parent, which contains an object of the class > Child, > which in turn contains an object of the class GrandChild. Each class creates the > object > that it contains. Each class also accepts a set of named parameters in its new() > method. > Without using Class::Container, Parent will have to know all the parameters that > Child > takes, and Child will have to know all the parameters that GrandChild takes. And some > of the parameters accepted by Parent will really control aspects of Child or > GrandChild. > Likewise, some of the parameters accepted by Child will really control aspects of > GrandChild. So, what happens when you decide you want to use a GrandDaughter class > instead of the generic GrandChild? Parent and Child must be modified accordingly, so > that > any additional parameters taken by GrandDaughter can be accommodated. This is a pain > - > the kind of pain that object-oriented programming was supposed to shield us from. > Now, how can Class::Container help? Using Class::Container, each class (Parent, > Child, > and GrandChild) will declare what arguments they take, and declare their > relationships > to the other classes (Parent creates/contains a Child, and Child creates/contains a > GrandChild). Then, when you create a Parent object, you can pass Parent->new() all > the > parameters for all three classes, and they will trickle down to the right places. > Furthermore, Parent and Child won't have to know anything about the parameters of its > contained objects. And finally, if you replace GrandChild with GrandDaughter, no > changes to Parent or Child will likely be necessary. Of course, to do it properly would require changes in two CPAN modules and in a core POE module, plus changes to probably a few other components that I'm not using but which also use ::TCP. So maybe that part is aiming a bit high at first, but the 'Address' part is doable without blowing too much up. 8-) Thanks. -- j. James FitzGibbon Consultant, Ajilon Services, [EMAIL PROTECTED] [EMAIL PROTECTED] voice/fax 612-304-6121/3277
