2010-04-26 9 views
2

Il y a Net::Msmgr module sur CPAN. Il est écrit propre et le code semble digne de confiance au premier coup d'œil. Cependant ce module semble être bêta et il y a peu de documentation et pas de tests: -/Pourquoi Perl Net :: Msmgr se bloque-t-il lorsque j'essaie de m'authentifier?

Quelqu'un at-il utilisé ce module en production? Je n'ai pas encore réussi à le faire fonctionner, car il faut que tout le traitement des boucles d'événements soit fait dans l'application et comme je l'ai déjà dit, il y a peu de documentation et aucun exemple de travail à étudier.

C'est là que je suis allé à ce jour:

#!/usr/bin/perl 
use strict; 
use warnings; 

use Event; 
use Net::Msmgr::Object; 
use Net::Msmgr::Session; 
use Net::Msmgr::User; 

use constant DEBUG => 511; 
use constant EVENT_TIMEOUT => 5; # seconds 

my ($username, $password) = qw/[email protected] my.password/; 
my $buddy = '[email protected]'; 

my $user = Net::Msmgr::User->new(user => $username, password => $password); 
my $session = Net::Msmgr::Session->new; 
$session->debug(DEBUG); 
$session->login_handler(\&login_handler); 
$session->user($user); 

my $conv; 

sub login_handler { 
    my $self = shift; 
    print "LOGIN\n"; 
    $self->ui_state_nln; 
    $conv = $session->ui_new_conversation; 
    $conv->invite($buddy); 
} 

our %watcher; 

sub ConnectHandler { 
    my ($connection) = @_; 
    warn "CONNECT\n"; 
    my $socket = $connection->socket; 
    $watcher{$connection} = Event->io(fd => $socket, 
             cb => [ $connection, '_recv_message' ], 
             poll => 're', 
             desc => 'recv_watcher', 
             repeat => 1); 
} 

sub DisconnectHandler { 
    my $connection = shift; 
    print "DISCONNECT\n"; 
    $watcher{$connection}->cancel; 
} 

$session->connect_handler(\&ConnectHandler); 
$session->disconnect_handler(\&DisconnectHandler); 

$session->Login; 

Event::loop(); 

C'est ce qu'il génère:

Dispatch Server connecting to: messenger.hotmail.com:1863 
Dispatch Server connected 
CONNECT 
Dispatch Server >>>VER 1 MSNP2 CVR0 
--> VER 1 MSNP2 CVR0 
Dispatch Server >>>USR 2 MD5 I [email protected] 
--> USR 2 MD5 I [email protected] 
Dispatch Server <<<VER 1 CVR0 
<-- VER 1 CVR0 

Et voilà tout, ici il se bloque. Le gestionnaire à la connexion n'est pas déclenché. Qu'est-ce que je fais mal?

Répondre

-2

espère que ces documents vous aider

1) Net::Msmgr documentation

2) Net::Msmgr::Session

+0

Merci, je les lis. Et la source aussi. – codeholic

+6

Mes questions sont assez difficiles, car j'essaie toujours d'obtenir des informations par moi-même avant de demander sur SO. Si je dis qu'il y a peu de documentation, cela signifie que j'ai déjà lu toute la documentation que j'ai pu trouver (documentation sur le CPAN en premier lieu) et qu'elle n'a pas répondu à ma question. Je ne demande pas comment résumer deux nombres. Et j'accepte les réponses qui répondent à mes questions. Est-ce la démotivation? Eh bien, je ne sais pas, que dois-je faire alors? Faire semblant? – codeholic

+0

Pourquoi -ve, n'importe quelle raison. – Space