わたなべです.

Minero Aoki <aamine / dp.u-netsurf.ne.jp> writes:

:  In Mail "[ruby-list:12197] Re: mailclient and inetclient"
:    watanabe / os.rim.or.jp wrote:

しまった. mail address が間違ってた.
直さないと.

:そうでないと「1kbyteごとのtimeout」ができないんです。

そうなのかなあ?
ちなみに自作ではこんな感じで処理してます.
遅いのは socket が unbuffered なので 1 バイトずつ read して
しまうからってのもあるので豪快に sysread.

  BUFFER_SIZE = 8192
  EOL = "\015\012"
  TERMINATOR = EOL + "." + EOL
  TSIZE = TERMINATOR.size
  TIMER = 40

  def read_until_dot
    data = ''
    catch(:break) do
      loop do
	timeout(TIMER) do
	  data << @sock.sysread(BUFFER_SIZE)
	  if data[-TSIZE, TSIZE] == TERMINATOR
	    data[-TSIZE + EOL.size .. -1] = ""
	    throw :break
	  end
	end
      end
    end
    data
  end

:> cygwin で確認するために qpopper を移植してしまった.
:
:すごいパワーですね。

2, 3 行いじって make しただけなのでパワーは必要なかったです.

-- 
わたなべひろふみ