Method: EaseEngine::Socket#recv

Defined in:
lib/ease_engine/socket.rb

#recv(max, flags = 0) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/ease_engine/socket.rb', line 40

def recv( max, flags = 0 )
  # 1回で全てのデータを読み込めるとは限らないので、複数回に分けてデータを全て読み込む
  @err = nil
  bufs = []
  while true
    begin
      buf = @socket.recv_nonblock( max, flags )
    rescue IO::EAGAINWaitReadable => err
      buf = ""
    rescue Errno::ECONNRESET => err
      buf = ""
    rescue => err
      @err = err
      buf = ""
    end
    break if buf.empty?
    
    bufs.push buf
  end
  
  buf = bufs.join
  @read_buf << buf
  @is_disable = true if bufs.empty?
  
  buf
end