simplify raised errors
This commit is contained in:
parent
a6acfd99fc
commit
8a31948d36
1 changed files with 18 additions and 15 deletions
|
|
@ -16,11 +16,8 @@ require 'tempfile'
|
||||||
require 'timeout'
|
require 'timeout'
|
||||||
|
|
||||||
class ArticleError < RuntimeError; end
|
class ArticleError < RuntimeError; end
|
||||||
class ReconnectError < ArticleError; end
|
class TempError < ArticleError; end
|
||||||
class GroupInfoError < ArticleError; end
|
class PermError < ArticleError; end
|
||||||
class BodyError < ArticleError; end
|
|
||||||
class XhdrError < ArticleError; end
|
|
||||||
class TimeoutError < ArticleError; end
|
|
||||||
|
|
||||||
class Article
|
class Article
|
||||||
|
|
||||||
|
|
@ -60,7 +57,7 @@ def reconnect(server)
|
||||||
rescue SocketError
|
rescue SocketError
|
||||||
print "Reconnect to #{server} failed\n"
|
print "Reconnect to #{server} failed\n"
|
||||||
del_server(server)
|
del_server(server)
|
||||||
raise ReconnectError
|
raise PermError, "Couldn't connect to #{server}"
|
||||||
end
|
end
|
||||||
print "Succesfully reconnected to #{server}\n"
|
print "Succesfully reconnected to #{server}\n"
|
||||||
end
|
end
|
||||||
|
|
@ -88,7 +85,8 @@ def get_articles(cachedir=false)
|
||||||
for server in @connections.keys
|
for server in @connections.keys
|
||||||
begin
|
begin
|
||||||
first, last = get_group_info(server)
|
first, last = get_group_info(server)
|
||||||
rescue ReconnectError, GroupInfoError
|
rescue PermError
|
||||||
|
print "#{$!}\n"
|
||||||
del_server(server)
|
del_server(server)
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
|
|
@ -108,13 +106,14 @@ def get_articles(cachedir=false)
|
||||||
print "rangelist: #{rangelist}\n" if Debuglevel >1
|
print "rangelist: #{rangelist}\n" if Debuglevel >1
|
||||||
print "rangelist: #{rangelist.type.to_s}\n" if Debuglevel >1
|
print "rangelist: #{rangelist.type.to_s}\n" if Debuglevel >1
|
||||||
print "rangelist elements: #{range.diff(@connections[server]["skip_ids"]).elements}\n" if Debuglevel >1
|
print "rangelist elements: #{range.diff(@connections[server]["skip_ids"]).elements}\n" if Debuglevel >1
|
||||||
|
begin
|
||||||
unless rangelist == nil or rangelist =~ /^$/
|
unless rangelist == nil or rangelist =~ /^$/
|
||||||
for i in rangelist.split(',')
|
for i in rangelist.split(',')
|
||||||
print "i: #{i}\n" if Debuglevel > 1
|
print "i: #{i}\n" if Debuglevel > 1
|
||||||
begin
|
begin
|
||||||
resp, subj_lines = get_xhdr(server, i, "subject")
|
resp, subj_lines = get_xhdr(server, i, "subject")
|
||||||
resp, messid_lines = get_xhdr(server, i, "message-id")
|
resp, messid_lines = get_xhdr(server, i, "message-id")
|
||||||
rescue TimeoutError, ReconnectError, XhdrError, GroupInfoError
|
rescue TempError
|
||||||
print "Caught: #{$!} reading from #{server}\n"
|
print "Caught: #{$!} reading from #{server}\n"
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
|
|
@ -138,6 +137,10 @@ def get_articles(cachedir=false)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
rescue PermError
|
||||||
|
del_server(server)
|
||||||
|
next
|
||||||
|
end
|
||||||
end
|
end
|
||||||
save_cache(cachedir)
|
save_cache(cachedir)
|
||||||
end
|
end
|
||||||
|
|
@ -153,7 +156,7 @@ def get_group_info(server)
|
||||||
resp, count, first, last, name = @connections[server]["nntp"].group(@group)
|
resp, count, first, last, name = @connections[server]["nntp"].group(@group)
|
||||||
rescue Net::NNTP::RuntimeError
|
rescue Net::NNTP::RuntimeError
|
||||||
print "Got error \"#{$!}\" from #{server}\n"
|
print "Got error \"#{$!}\" from #{server}\n"
|
||||||
raise GroupInfoError
|
raise PermError, "$!"
|
||||||
rescue Errno::EPIPE, Errno::ECONNRESET
|
rescue Errno::EPIPE, Errno::ECONNRESET
|
||||||
print "Caught Errno::EPIPE reading from server #{server}\n"
|
print "Caught Errno::EPIPE reading from server #{server}\n"
|
||||||
print "Error: #{$!}\n"
|
print "Error: #{$!}\n"
|
||||||
|
|
@ -163,7 +166,7 @@ def get_group_info(server)
|
||||||
end
|
end
|
||||||
rescue TimeoutError
|
rescue TimeoutError
|
||||||
timedout += 1
|
timedout += 1
|
||||||
raise TimeoutError, "Too many timeouts! (get_group_info)\n" if timedout > 1
|
raise PermError, "Too many timeouts! (get_group_info)\n" if timedout > 1
|
||||||
print "Time out, reconnecting to server...\n"
|
print "Time out, reconnecting to server...\n"
|
||||||
reconnect(server)
|
reconnect(server)
|
||||||
retry
|
retry
|
||||||
|
|
@ -202,7 +205,7 @@ def get_xhdr(server, range, header)
|
||||||
rescue TimeoutError
|
rescue TimeoutError
|
||||||
print "Time out, reconnecting to server\n"
|
print "Time out, reconnecting to server\n"
|
||||||
timedout += 1
|
timedout += 1
|
||||||
raise TimeoutError, "Too many timeouts! (get_xhrd)\n" if timedout > 1
|
raise PermError, "Too many timeouts! (get_xhrd)\n" if timedout > 1
|
||||||
reconnect(server)
|
reconnect(server)
|
||||||
get_group_info(server)
|
get_group_info(server)
|
||||||
retry
|
retry
|
||||||
|
|
@ -264,7 +267,7 @@ def get_body(server, message)
|
||||||
rescue TimeoutError
|
rescue TimeoutError
|
||||||
print "Time out, reconnecting to server\n"
|
print "Time out, reconnecting to server\n"
|
||||||
timedout += 1
|
timedout += 1
|
||||||
raise TimeoutError, "Too many timeouts! (get_body)\n" if timedout > 1
|
raise PermError, "Too many timeouts! (get_body)\n" if timedout > 1
|
||||||
reconnect(server)
|
reconnect(server)
|
||||||
get_group_info(server)
|
get_group_info(server)
|
||||||
retry
|
retry
|
||||||
|
|
@ -293,7 +296,7 @@ def get_group_body(subj)
|
||||||
i += 1
|
i += 1
|
||||||
retry
|
retry
|
||||||
else
|
else
|
||||||
raise BodyError, "Message-id not on another server\n"
|
raise TempError, "Message-id not on another server\n"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -324,7 +327,7 @@ def get_group_body_first(subj)
|
||||||
i += 1
|
i += 1
|
||||||
retry
|
retry
|
||||||
else
|
else
|
||||||
raise BodyError, "Message-id not on another server\n"
|
raise TempError, "Message-id not on another server\n"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -354,7 +357,7 @@ def get_group_body_rest(subj, file=nil)
|
||||||
i += 1
|
i += 1
|
||||||
retry
|
retry
|
||||||
else
|
else
|
||||||
raise BodyError, "Message-id not on another server\n"
|
raise TempError, "Message-id not on another server\n"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue