summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2015-01-16 09:52:20 -0500
committerJules Laplace <jules@okfoc.us>2015-01-16 09:52:20 -0500
commitb3731d552fa91705459ae6358311d346ed5d3d02 (patch)
treeb617b2fbf690bfe597f712d736ce92f87fcb718d
parentc1e9a2441a8437f4ff2e7ca84fd3151e59f1a5d2 (diff)
implement queue
-rwxr-xr-xxdcc.pl24
1 files changed, 16 insertions, 8 deletions
diff --git a/xdcc.pl b/xdcc.pl
index e638b2a..230613b 100755
--- a/xdcc.pl
+++ b/xdcc.pl
@@ -115,19 +115,21 @@ sub xdcc_enqueue {
my ($server, $nick, $index) = @_;
my $id = int $index;
$id -= 1;
+
+ my $request = {
+ server => $server,
+ nick => $nick,
+ id => $id
+ };
+
if (@queue == 0) {
- return xdcc_send($server, $nick, $id);
+ return xdcc_send($request);
}
elsif (@queue > $queue_max) {
xdcc_message( $server, $nick, 'queue_is_full' );
return;
}
- my $user = {
- server => $server,
- nick => $nick,
- id => $id
- };
- push(@queue, $user);
+ push(@queue, $request);
xdcc_queue();
}
sub xdcc_list {
@@ -158,7 +160,10 @@ sub xdcc_queue {
xdcc_message( $server, $nick, 'queue_length', scalar @queue, scalar @queue == 1 ? "" : "s" )
}
sub xdcc_send {
- my ($server, $nick, $id) = @_;
+ my ($request) = @_;
+ my $server = $request->{server};
+ my $nick = $request->{nick};
+ my $id = $request->{id};
my $file = $files[$id];
my $path = $file->{path};
Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'xdcc_sending_file', $id, $nick, $file->{fn});
@@ -258,6 +263,9 @@ sub dcc_created {
}
sub dcc_destroyed {
Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'xdcc_log', 'dcc destroyed');
+ if (@queue == 0) { return; }
+ my $request = shift @queue;
+ xdcc_send($request);
}
sub dcc_connected {
Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'xdcc_log', 'dcc connected');