symbolicky odkaz na balik

Pavel Kolesnikov k na les.cz
Pondělí Červenec 27 15:09:13 MEST 1998


Honza Pazdziora <adelton na informatics.muni.cz> wrote:

: Jestli to dobre chapu, tak to $self zde je instance nejake dalsi,
: treti tridy, a z te vy dedite v nejake ctvrte tride. A vy chcete,
: aby pouzivaly jiny objekt pro ten socket.

Presne tak.

: Nema tady byt $self->{'socket'}?

Mate pravdu, prepsal jsem se pri prepisovani.

: No, vypada to rozumne, ale: nakolik jsou IO::Socket::INET
: a HTTP::Daemon kompatibilni?

HTTP::Daemon je potomek IO::Socket::INET.

: Nevim, co je ta trida, ze ktere dedite,

Net::Daemon (ma slouzit jako abstrakce multithreadoveho serveru,
ale vzhledem k zminenemu problemu mi moc abstraktni neprijde).

: Druha moznost pak je udelat v tom Vasem Bindu dalsi bless uz na ten
: vytvoreny socket -- data tim neznicite a budete to mit v nove tride,
: takze to pojede s novymi metodami. Jakoze

: 	bless $self->{'socket'}, HTTP::Daemon;

To bohuzel nejde - puvodni Bind opsahuje i kod pro smycku obsahujici
$client = $self->{'socket'}->accept() a spousteni novych Threadu
s metodou Run, takze bych ho musel uplne prepsat vcetne te smycky,
coz by se dost pricilo spravne programatorske lenosti :)

K $clientovi se sice muzu dostat i v metode Run, jenze tam uz
bless nepomaha - mozna proto, ze accept() v HTTP::Daemon vraci
instanci tridy HTTP::Daemon::Client a ta se asi nejak odkazuje
na puvodni socket, o nemz ale predpoklada, ze je tridy
HTTP::Daemon... ale tak hluboko jsem se v tom nehrabal, zatim
jsem pouze zjistil, ze to nejde :)

Ocividne mam dojem, ze bud Net::Daemon abtrahovat servery nejakym
ve svete perlovych modulu nekombatibilnim zpusobem a nebo naopak
je neprilis prozirave psana implementace HTTP protokolu 
v HTTP::Daemon - nepoznamena nekdo zkusenejsi, ktera moznost
je pravdiva?

   Pavel




Další informace o konferenci Perl