A gem containing HTTP-specific components and data types for RFlow (https://github.com/redjack/rflow).
RFlow::Message::Data::HTTP::Response
- an HTTP request RFlow messageRFlow::Message::Data::HTTP::Request
- an HTTP response RFlow message
The server component (RFlow::Components::HTTP::Server
) implements a
HTTP server based on
eventmachine_httpserver
.
The component accepts incoming HTTP connections (according to its
configuration, see below), marshals the HTTP request into an RFlow
message, annotates the message with a bit of provenance (see below)
and then sends the message out its request_port
. When a HTTP
response message is received on its response_port
, the component
checks the provenance to see if it matches an underlying TCP/HTTP
connection and, if so, creates an actual HTTP response from the
incoming message and send it to the client.
The HTTP request message sent from the HTTP server component utilizes
the RFlow::Message
provenance feature to annotate a request message
with a bit of metadata that allows subsequent response messages to be
matched to their underlying TCP/HTTP connections. This means that any
component that processes HTTP request messages to generate response
messages must copy the provenance from the request message to the
response message.
listen
- the IP address on which to listen, defaults to '127.0.0.1'port
- the port on which to listen, defaults to '8000'
The underlying eventmachine_httpserver has two limitations that we've run across:
-
Max 20 MB HTTP request Content-Length: https://github.com/eventmachine/evma_httpserver/blob/master/ext/http.h#L78
-
No support for HTTP chunked transfer encoding, mostly because it does not sent a Content-Length HTTP header.
Not yet implemented completely
Copyright 2014 RedJack LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.