Class: Net::IMAP

Inherits:
Object
  • Object
show all
Defined in:
lib/clacks/stdlib_extensions/ruby_1_8.rb

Overview

Backport from ruby 1.9.3 source to ruby 1.8.7

Instance Method Summary collapse

Instance Method Details

#idle(&response_handler) ⇒ Object

Raises:

  • (LocalJumpError)


4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/clacks/stdlib_extensions/ruby_1_8.rb', line 4

def idle(&response_handler)
  raise LocalJumpError, "no block given" unless response_handler

  response = nil

  synchronize do
    tag = Thread.current[:net_imap_tag] = generate_tag
    put_string("#{tag} IDLE#{CRLF}")

    begin
      add_response_handler(response_handler)
      @idle_done_cond = new_cond
      @idle_done_cond.wait
      @idle_done_cond = nil
      if @receiver_thread_terminating
        raise Net::IMAP::Error, "connection closed"
      end
    ensure
      unless @receiver_thread_terminating
        remove_response_handler(response_handler)
        put_string("DONE#{CRLF}")
        response = get_tagged_response(tag)  #, "IDLE")
      end
    end
  end

  return response
end

#idle_doneObject



33
34
35
36
37
38
39
40
# File 'lib/clacks/stdlib_extensions/ruby_1_8.rb', line 33

def idle_done
  synchronize do
    if @idle_done_cond.nil?
      raise Net::IMAP::Error, "not during IDLE"
    end
    @idle_done_cond.signal
  end
end