À (at) Tue, 26 Jul 2005 14:03:26 +0000 (UTC),
Nicolas George <nicolas$ écrivait (wrote):Je viens de survoler la doc de ce module, et au premier regard, j'ai
l'impression que l'API est assez foireuse. Et pendant que j'écrivais ce
message, j'ai regardé les sources, et ça confirme : ce module est une
connerie.
Heu... Un module écrit par Graham Barr est rarement (jamais?) une
connerie !
À (at) Tue, 26 Jul 2005 14:03:26 +0000 (UTC),
Nicolas George <nicolas$george@salle-s.org> écrivait (wrote):
Je viens de survoler la doc de ce module, et au premier regard, j'ai
l'impression que l'API est assez foireuse. Et pendant que j'écrivais ce
message, j'ai regardé les sources, et ça confirme : ce module est une
connerie.
Heu... Un module écrit par Graham Barr est rarement (jamais?) une
connerie !
À (at) Tue, 26 Jul 2005 14:03:26 +0000 (UTC),
Nicolas George <nicolas$ écrivait (wrote):Je viens de survoler la doc de ce module, et au premier regard, j'ai
l'impression que l'API est assez foireuse. Et pendant que j'écrivais ce
message, j'ai regardé les sources, et ça confirme : ce module est une
connerie.
Heu... Un module écrit par Graham Barr est rarement (jamais?) une
connerie !
Les méthodes distinctes sont utiles lorsqu'on n'attend que des
lectures, que des écritures ou que des exceptions.
La fonction 'select' gère le cas général et permet de récupérer
imméditatement les objets à traiter. Elle est vraiment *beaucoup* plus
simple d'usage que la fonction 'select' primitive.
En fait, ce module, bien utilisé, me semble très pratique et encapsule
les choses proprement (la manipulation des fd et des vecteurs de bits
n'est pas vraiment simples à faire). Mais, effectivement, il n'empêche
pas de faire n'importe quoi.
Les méthodes distinctes sont utiles lorsqu'on n'attend que des
lectures, que des écritures ou que des exceptions.
La fonction 'select' gère le cas général et permet de récupérer
imméditatement les objets à traiter. Elle est vraiment *beaucoup* plus
simple d'usage que la fonction 'select' primitive.
En fait, ce module, bien utilisé, me semble très pratique et encapsule
les choses proprement (la manipulation des fd et des vecteurs de bits
n'est pas vraiment simples à faire). Mais, effectivement, il n'empêche
pas de faire n'importe quoi.
Les méthodes distinctes sont utiles lorsqu'on n'attend que des
lectures, que des écritures ou que des exceptions.
La fonction 'select' gère le cas général et permet de récupérer
imméditatement les objets à traiter. Elle est vraiment *beaucoup* plus
simple d'usage que la fonction 'select' primitive.
En fait, ce module, bien utilisé, me semble très pratique et encapsule
les choses proprement (la manipulation des fd et des vecteurs de bits
n'est pas vraiment simples à faire). Mais, effectivement, il n'empêche
pas de faire n'importe quoi.
Je trouve que l'API est mal choisie, alors, et la documentation n'est
vraiment pas là pour améliorer les choses : rien qu'à lire le synopsis, on a
la très nette impression que can_read/can_write sont les méthodes normales
du module, et il faut attendre les détails pour entendre parler de la
méthode select, qui passe pour une fonction d'utilisation avancée, rarement
utile.
Alors que c'est le contraire : l'usage normal est select, et
can_read/can_write sont des cas particuliers moins utiles.
À mon avis, une API plus intelligente aurait été d'avoir un paramètre de
mode à la méthode add, pour indiquer si on souhaite surveiller un fd donné
en lecture, en écriture ou les deux, et une seule méthode en tout et pour
tout pour faire le test.
Je trouve que l'API est mal choisie, alors, et la documentation n'est
vraiment pas là pour améliorer les choses : rien qu'à lire le synopsis, on a
la très nette impression que can_read/can_write sont les méthodes normales
du module, et il faut attendre les détails pour entendre parler de la
méthode select, qui passe pour une fonction d'utilisation avancée, rarement
utile.
Alors que c'est le contraire : l'usage normal est select, et
can_read/can_write sont des cas particuliers moins utiles.
À mon avis, une API plus intelligente aurait été d'avoir un paramètre de
mode à la méthode add, pour indiquer si on souhaite surveiller un fd donné
en lecture, en écriture ou les deux, et une seule méthode en tout et pour
tout pour faire le test.
Je trouve que l'API est mal choisie, alors, et la documentation n'est
vraiment pas là pour améliorer les choses : rien qu'à lire le synopsis, on a
la très nette impression que can_read/can_write sont les méthodes normales
du module, et il faut attendre les détails pour entendre parler de la
méthode select, qui passe pour une fonction d'utilisation avancée, rarement
utile.
Alors que c'est le contraire : l'usage normal est select, et
can_read/can_write sont des cas particuliers moins utiles.
À mon avis, une API plus intelligente aurait été d'avoir un paramètre de
mode à la méthode add, pour indiquer si on souhaite surveiller un fd donné
en lecture, en écriture ou les deux, et une seule méthode en tout et pour
tout pour faire le test.
Paul Gaborit wrote in message :Les méthodes distinctes sont utiles lorsqu'on n'attend que des
lectures, que des écritures ou que des exceptions.
La fonction 'select' gère le cas général et permet de récupérer
imméditatement les objets à traiter. Elle est vraiment *beaucoup* plus
simple d'usage que la fonction 'select' primitive.
En fait, ce module, bien utilisé, me semble très pratique et encapsule
les choses proprement (la manipulation des fd et des vecteurs de bits
n'est pas vraiment simples à faire). Mais, effectivement, il n'empêche
pas de faire n'importe quoi.
Je trouve que l'API est mal choisie, alors, et la documentation n'est
vraiment pas là pour améliorer les choses : rien qu'à lire le synopsis, on a
la très nette impression que can_read/can_write sont les méthodes normales
du module, et il faut attendre les détails pour entendre parler de la
méthode select, qui passe pour une fonction d'utilisation avancée, rarement
utile.
Alors que c'est le contraire : l'usage normal est select, et
can_read/can_write sont des cas particuliers moins utiles.
À mon avis, une API plus intelligente aurait été d'avoir un paramètre de
mode à la méthode add, pour indiquer si on souhaite surveiller un fd donné
en lecture, en écriture ou les deux, et une seule méthode en tout et pour
tout pour faire le test.
Paul Gaborit wrote in message <r7ack94nyc.fsf@vaugirard.enstimac.fr>:
Les méthodes distinctes sont utiles lorsqu'on n'attend que des
lectures, que des écritures ou que des exceptions.
La fonction 'select' gère le cas général et permet de récupérer
imméditatement les objets à traiter. Elle est vraiment *beaucoup* plus
simple d'usage que la fonction 'select' primitive.
En fait, ce module, bien utilisé, me semble très pratique et encapsule
les choses proprement (la manipulation des fd et des vecteurs de bits
n'est pas vraiment simples à faire). Mais, effectivement, il n'empêche
pas de faire n'importe quoi.
Je trouve que l'API est mal choisie, alors, et la documentation n'est
vraiment pas là pour améliorer les choses : rien qu'à lire le synopsis, on a
la très nette impression que can_read/can_write sont les méthodes normales
du module, et il faut attendre les détails pour entendre parler de la
méthode select, qui passe pour une fonction d'utilisation avancée, rarement
utile.
Alors que c'est le contraire : l'usage normal est select, et
can_read/can_write sont des cas particuliers moins utiles.
À mon avis, une API plus intelligente aurait été d'avoir un paramètre de
mode à la méthode add, pour indiquer si on souhaite surveiller un fd donné
en lecture, en écriture ou les deux, et une seule méthode en tout et pour
tout pour faire le test.
Paul Gaborit wrote in message :Les méthodes distinctes sont utiles lorsqu'on n'attend que des
lectures, que des écritures ou que des exceptions.
La fonction 'select' gère le cas général et permet de récupérer
imméditatement les objets à traiter. Elle est vraiment *beaucoup* plus
simple d'usage que la fonction 'select' primitive.
En fait, ce module, bien utilisé, me semble très pratique et encapsule
les choses proprement (la manipulation des fd et des vecteurs de bits
n'est pas vraiment simples à faire). Mais, effectivement, il n'empêche
pas de faire n'importe quoi.
Je trouve que l'API est mal choisie, alors, et la documentation n'est
vraiment pas là pour améliorer les choses : rien qu'à lire le synopsis, on a
la très nette impression que can_read/can_write sont les méthodes normales
du module, et il faut attendre les détails pour entendre parler de la
méthode select, qui passe pour une fonction d'utilisation avancée, rarement
utile.
Alors que c'est le contraire : l'usage normal est select, et
can_read/can_write sont des cas particuliers moins utiles.
À mon avis, une API plus intelligente aurait été d'avoir un paramètre de
mode à la méthode add, pour indiquer si on souhaite surveiller un fd donné
en lecture, en écriture ou les deux, et une seule méthode en tout et pour
tout pour faire le test.
Votre débat me turlupine depuis deux jours.
J'ai pêché la technique de la boucle
<snip>
sur un serveur TCP, en mode non bloquant, dans le "Cookbook" de perl ou
bien dans "Total Perl" (presque pareil mais francisé).
Si j'ai bien tout compris, vous ne recommandez pas cette technique ???
Ne dois-je gérer que la méthode "can_read" en mode bloquant et lever une
interrupt gràce à ularm de Time::HiRes pour gérer les envois ?
Equipement1---------Socket1
Equipement2---------Socket2--+--+---Controle d'Accès
/
EquipementN---------SocketN Scripts Perl (Pilotage)
Qu'en pensez-vous ?
Votre débat me turlupine depuis deux jours.
J'ai pêché la technique de la boucle
<snip>
sur un serveur TCP, en mode non bloquant, dans le "Cookbook" de perl ou
bien dans "Total Perl" (presque pareil mais francisé).
Si j'ai bien tout compris, vous ne recommandez pas cette technique ???
Ne dois-je gérer que la méthode "can_read" en mode bloquant et lever une
interrupt gràce à ularm de Time::HiRes pour gérer les envois ?
Equipement1---------Socket1
Equipement2---------Socket2--+--+---Controle d'Accès
/
EquipementN---------SocketN Scripts Perl (Pilotage)
Qu'en pensez-vous ?
Votre débat me turlupine depuis deux jours.
J'ai pêché la technique de la boucle
<snip>
sur un serveur TCP, en mode non bloquant, dans le "Cookbook" de perl ou
bien dans "Total Perl" (presque pareil mais francisé).
Si j'ai bien tout compris, vous ne recommandez pas cette technique ???
Ne dois-je gérer que la méthode "can_read" en mode bloquant et lever une
interrupt gràce à ularm de Time::HiRes pour gérer les envois ?
Equipement1---------Socket1
Equipement2---------Socket2--+--+---Controle d'Accès
/
EquipementN---------SocketN Scripts Perl (Pilotage)
Qu'en pensez-vous ?
Votre débat me turlupine depuis deux jours.
J'ai pêché la technique de la boucle
<snip>
sur un serveur TCP, en mode non bloquant, dans le "Cookbook" de perl ou
bien dans "Total Perl" (presque pareil mais francisé).
Si j'ai bien tout compris, vous ne recommandez pas cette technique ???
Ne dois-je gérer que la méthode "can_read" en mode bloquant et lever une
interrupt gràce à ularm de Time::HiRes pour gérer les envois ?
Equipement1---------Socket1
Equipement2---------Socket2--+--+---Controle d'Accès
/
EquipementN---------SocketN Scripts Perl (Pilotage)
Qu'en pensez-vous ?
Votre débat me turlupine depuis deux jours.
J'ai pêché la technique de la boucle
<snip>
sur un serveur TCP, en mode non bloquant, dans le "Cookbook" de perl ou
bien dans "Total Perl" (presque pareil mais francisé).
Si j'ai bien tout compris, vous ne recommandez pas cette technique ???
Ne dois-je gérer que la méthode "can_read" en mode bloquant et lever une
interrupt gràce à ularm de Time::HiRes pour gérer les envois ?
Equipement1---------Socket1
Equipement2---------Socket2--+--+---Controle d'Accès
/
EquipementN---------SocketN Scripts Perl (Pilotage)
Qu'en pensez-vous ?
Votre débat me turlupine depuis deux jours.
J'ai pêché la technique de la boucle
<snip>
sur un serveur TCP, en mode non bloquant, dans le "Cookbook" de perl ou
bien dans "Total Perl" (presque pareil mais francisé).
Si j'ai bien tout compris, vous ne recommandez pas cette technique ???
Ne dois-je gérer que la méthode "can_read" en mode bloquant et lever une
interrupt gràce à ularm de Time::HiRes pour gérer les envois ?
Equipement1---------Socket1
Equipement2---------Socket2--+--+---Controle d'Accès
/
EquipementN---------SocketN Scripts Perl (Pilotage)
Qu'en pensez-vous ?