summaryrefslogtreecommitdiff
path: root/lib/net/pop.rb
diff options
context:
space:
mode:
authoraamine <aamine@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-10-12 09:54:32 +0000
committeraamine <aamine@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-10-12 09:54:32 +0000
commit76819ef99ab0986f9d5b174b68fed919e4cd9585 (patch)
tree02b1c58dc07b8d9ca4e68df53fba4dfa49b6f0f8 /lib/net/pop.rb
parent9dbce410e10e409f178291c1ef1007a1d9dd718c (diff)
aamine
* lib/net/pop.rb: POP3#reset * lib/net/http.rb: a code for "Switch Protocol" was wrongly 100 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/net/pop.rb')
-rw-r--r--lib/net/pop.rb31
1 files changed, 25 insertions, 6 deletions
diff --git a/lib/net/pop.rb b/lib/net/pop.rb
index a9d13cc..4eacb51 100644
--- a/lib/net/pop.rb
+++ b/lib/net/pop.rb
@@ -45,6 +45,9 @@ Net::Protocol
an array of ((URL:#POPMail)).
This array is renewed when session started.
+: reset
+ reset the session. All "deleted mark" are removed.
+
== Net::APOP
@@ -128,13 +131,22 @@ module Net
def initialize( addr = nil, port = nil )
super
- @mails = [].freeze
+ @mails = nil
end
attr :mails
- def each
- @mails.each {|m| yield m }
+ def each( &block )
+ io_check
+ @mails.each &block
+ end
+
+ def reset
+ io_check
+ @command.rset
+ @mails.each do |m|
+ m.instance_eval { @deleted = false }
+ end
end
@@ -144,15 +156,21 @@ module Net
@command.auth( acnt, pwd )
@mails = []
- t = type.mail_type
+ mtype = type.mail_type
@command.list.each_with_index do |size,idx|
if size then
- @mails.push t.new( idx, size, @command )
+ @mails.push mtype.new( idx, size, @command )
end
end
@mails.freeze
end
+ def io_check
+ if not @socket or @socket.closed? then
+ raise IOError, 'pop session is not opened yet'
+ end
+ end
+
end
POP = POP3
@@ -197,13 +215,14 @@ module Net
end
def header( dest = '' )
- top( 0, dest )
+ top 0, dest
end
def delete
@command.dele( @num )
@deleted = true
end
+
alias delete! delete
def deleted?