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