Class: Net::HTTP::Server::Daemon
- Inherits:
-
GServer
- Object
- GServer
- Net::HTTP::Server::Daemon
- Defined in:
- lib/net/http/server/daemon.rb
Constant Summary collapse
- DEFAULT_HOST =
Default host to bind to.
'0.0.0.0'
- DEFAULT_PORT =
Default port to listen on.
8080
- MAX_CONNECTIONS =
Maximum number of simultaneous connections.
256
Constants included from Responses
Responses::BAD_REQUEST, Responses::HTTP_STATUSES, Responses::HTTP_VERSION
Constants included from Requests
Instance Method Summary collapse
-
#handler(object = nil) {|request, socket| ... } ⇒ Object
Sets the HTTP Request Handler.
-
#initialize(options = {}) {|request, socket| ... } ⇒ Daemon
constructor
Creates a new HTTP Daemon.
-
#serve(socket) ⇒ Object
Receives HTTP Requests and handles them.
Methods included from Responses
#write_body, #write_headers, #write_response, #write_status
Methods included from Requests
#normalize_headers, #normalize_request, #normalize_uri, #read_request
Constructor Details
#initialize(options = {}) {|request, socket| ... } ⇒ Daemon
Creates a new HTTP Daemon.
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/net/http/server/daemon.rb', line 54 def initialize(={},&block) host = .fetch(:host,DEFAULT_HOST) port = .fetch(:port,DEFAULT_PORT).to_i max_connections = .fetch(:max_connections,MAX_CONNECTIONS) log = .fetch(:log,STDERR) super(port,host,max_connections,log,false,true) handler([:handler],&block) end |
Instance Method Details
#handler(object = nil) {|request, socket| ... } ⇒ Object
Sets the HTTP Request Handler.
83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/net/http/server/daemon.rb', line 83 def handler(object=nil,&block) if object unless object.respond_to?(:call) raise(ArgumentError,"HTTP Request Handler must respond to #call") end elsif block.nil? raise(ArgumentError,"no HTTP Request Handler block given") end @handler = (object || block) end |
#serve(socket) ⇒ Object
Receives HTTP Requests and handles them.
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/net/http/server/daemon.rb', line 101 def serve(socket) if (raw_request = read_request(socket)) parser = Parser.new begin request = parser.parse(raw_request) rescue Parslet::ParseFailed => error return Responses::BAD_REQUEST end normalize_request(request) # rack compliant status, headers, body = @handler.call(request,socket) write_response(socket,status,headers,body) end end |