lib/net/ajp13/server.rb in ruby-ajp-0.2.0 vs lib/net/ajp13/server.rb in ruby-ajp-0.2.1

- old
+ new

@@ -72,18 +72,22 @@ # The port number to bind. attr_reader :service # logger attr_accessor :logger - def logger + def logger #:nodoc: unless @logger require 'logger' @logger = Logger.new(STDOUT) end @logger end + + # + # Starts the server; opens the socket, begins accepting requests, .... + # +sock+:: If not nil, the server uses +sock+ instead of opening a new socket. def start(sock = nil) if sock @sock = sock else @sock = @open_socket.call @@ -149,10 +153,15 @@ raise AJPPacketError, "Unrecognized packet type #{packet.message_type}" end end end + + # Handler for FORWARD_REQUEST message. + # + # Normally, you should override #process_request instead of overriding this + # method directly. def process_forward_request(packet, conn) req = Net::AJP13::Request.from_packet(packet) if req['content-length'] and req.content_length > 0 req.body_stream = BodyInput.new(conn, req.content_length) end @@ -210,33 +219,36 @@ packet.send_to conn conn.close if user_code_error end + # Handler for CPING message def process_cping(packet, conn) packet = Net::AJP13::Packet.new packet.direction = :from_app packet.append_byte CPONG_REPLY packet.send_to conn end + # Handler for SHUTDOWN message. def process_shutdown(packet, conn) if IPAddr.new(conn.addr[3]) == IPAddr.new(conn.peeraddr[3]) shutdown end end + # Shuts the server down. def shutdown(force = false) @shutdown = true @sock.close if force end class ProcessRequestNotImplementedError < NotImplementedError end # Input stream that corresponds the request body from the web server. # BodyInput object acts as an IO except writing methods. - class BodyInput + class BodyInput #:nodoc: all include Net::AJP13::Constants include Enumerable # +sock+:: socket connection to the web server # +length+:: Content-Length