Changeset 5832
- Timestamp:
- 07/04/09 18:18:00 (3 years ago)
- Location:
- trunk/Padre-Plugin-Swarm/lib/Padre
- Files:
-
- 4 edited
-
Swarm/Service.pm (modified) (2 diffs)
-
Swarm/Service/Chat.pm (modified) (1 diff)
-
Swarm/Transport/IRC.pm (modified) (8 diffs)
-
Wx/Swarm/Chat.pm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Padre-Plugin-Swarm/lib/Padre/Swarm/Service.pm
r5826 r5832 30 30 croak "No use_transport defined" unless exists $self->{use_transport}; 31 31 my $transports = $self->{use_transport}; 32 32 33 while ( my ($class,$args) = each %$transports ) { 33 34 Class::Autouse->autouse($class); … … 35 36 $self->set_transport( $transport ); 36 37 } 38 $self->transport->subscribe_channel( $_ , 1 ) 39 for $self->service_channels; 40 37 41 } 38 42 -
trunk/Padre-Plugin-Swarm/lib/Padre/Swarm/Service/Chat.pm
r5831 r5832 28 28 Padre::Util::debug('Starting chat service'); 29 29 my $config = Padre::Config->read; 30 30 31 $self->_attach_transports; 31 32 Padre::Util::debug('Chat transports attached'); 32 33 Padre::Util::debug( $self->transport ); 33 34 34 $self->transport->subscribe_channel( $_ ) 35 for $self->service_channels; 35 36 36 37 37 Padre::Util::debug('Channels subscribed'); -
trunk/Padre-Plugin-Swarm/lib/Padre/Swarm/Transport/IRC.pm
r5831 r5832 24 24 25 25 my $con = AnyEvent::IRC::Client->new; 26 26 27 $con->connect ( 27 28 "irc.perl.org" => 6667 , … … 31 32 } 32 33 ); 33 34 $self->_register_irc_callbacks($con); 34 35 $self->{connection} = $con; 35 $self->_register_irc_callbacks($con); 36 36 37 my $c = AnyEvent->condvar; 37 38 $self->{condvar} = $c; … … 45 46 $self->connection->disconnect; 46 47 delete $self->{connection}; 48 delete $self->{condvar}; 47 49 } 48 50 … … 59 61 } 60 62 61 # $con->register( 62 # $self->nickname, 63 # 'Padre-Swarm-Transport-IRC', 64 # , getlogin() 65 # ); 66 67 $self->update_channels; 63 $con->register( 64 $self->nickname, 65 'Padre-Swarm-Transport-IRC', 66 , getlogin() 67 ); 68 68 69 69 }, … … 71 71 warn "Oh, got a disconnect: $_[1], exiting...\n"; 72 72 $self->condvar->broadcast; 73 }, 74 registered => sub { 75 warn "REGISTERED!!"; 76 $self->update_channels; 73 77 } 74 78 ); … … 80 84 81 85 my $body = join (' ',@{ $ircmsg->{params} } ); 82 my $msg = {83 user => $ircmsg->{prefix},84 message => $body ,85 type => 'chat',86 };87 86 my $frame = { 88 87 address => $handle, 89 88 channel => $channel, 90 89 }; 91 warn "Publick message in $channel from $handle"; 92 push @{ $self->{incoming_buffer}{$channel} }, [$msg,$frame]; 90 $body =~ s/\Q$channel\E //; 91 warn "Publick message in $channel '$body'"; 92 push @{ $self->{incoming_buffer}{$channel} }, [$body,$frame]; 93 93 94 94 } … … 106 106 } 107 107 108 109 use Data::Dumper; 108 110 sub update_channels { 109 111 my ($self) = @_; 110 while ( my ($channel,$loop ) = each %{ $self->channels } ) {111 $self-> subscribe_channel($channel,$loop);112 while ( my ($channel,$loopback) = each %{ $self->subscriptions } ) { 113 $self->_connect_channel( $channel, $loopback ); 112 114 } 113 115 … … 117 119 sub poll { 118 120 my ($self,$time) = @_; 119 #warn "Polling for $time:";121 #warn "Polling for $time:"; 120 122 my $c = AnyEvent->condvar; 121 123 my $timer = AnyEvent->timer( after=>$time, 122 124 cb=>sub{ $c->send } ); 125 #warn "$timer running"; 123 126 $c->recv; 124 #warn "Returned from poll wait";127 #warn "Returned from poll wait"; 125 128 if ( keys %{ $self->{incoming_buffer} } ) { 126 warn "DATA IN BUFFER!" ;127 return keys %{ $self->{incoming_buffer} };129 warn "DATA IN BUFFER!", %{ $self->{incoming_buffer} }; 130 return (keys %{ $self->{incoming_buffer} }); 128 131 } 132 return; 129 133 130 134 } 131 135 136 use Data::Dumper; 132 137 sub receive_from_channel { 133 138 my ($self,$channel) = @_; 139 warn "Search for $channel"; 134 140 return unless exists $self->{incoming_buffer}{$channel}; 135 shift @{ $self->{incoming_buffer}{$channel} };136 141 142 my @queue = @{ delete $self->{incoming_buffer}{$channel} }; 143 my $d = shift @queue; 144 $self->{incoming_buffer}{$channel} = \@queue 145 if @queue; 146 my ($msg,$frame) = @$d; 137 147 } 138 148 -
trunk/Padre-Plugin-Swarm/lib/Padre/Wx/Swarm/Chat.pm
r5831 r5832 60 60 my $service = Padre::Swarm::Service::Chat->new( 61 61 use_transport => { 62 'Padre::Swarm::Transport::Multicast'=>{63 #'Padre::Swarm::Transport::IRC'=>{62 #'Padre::Swarm::Transport::Multicast'=>{ 63 'Padre::Swarm::Transport::IRC'=>{ 64 64 nickname => $config->identity_nickname 65 65 },
Note: See TracChangeset
for help on using the changeset viewer.
