class FCGI::FastCGISocket

Public Class Methods

new(sock) click to toggle source
# File lib/fcgi.rb, line 192
def initialize(sock)
  @socket = sock
end

Public Instance Methods

read_record() click to toggle source
# File lib/fcgi.rb, line 196
def read_record
  header = @socket.read(Record::HEADER_LENGTH) or return nil
  return nil unless header.size == Record::HEADER_LENGTH
  version, type, reqid, clen, padlen, reserved = *Record.parse_header(header)
  Record.class_for(type).parse(reqid, read_record_body(clen, padlen))
end
send_record(rec) click to toggle source
# File lib/fcgi.rb, line 213
def send_record(rec)
  @socket.write rec.serialize
  @socket.flush
end

Private Instance Methods

read_record_body(clen, padlen) click to toggle source
# File lib/fcgi.rb, line 203
def read_record_body(clen, padlen)
  buf = ''
  while buf.length < clen
    buf << @socket.read([1024, clen - buf.length].min)
  end
  @socket.read padlen if padlen
  buf
end