Class: Mongrel2::Response
- Inherits:
-
Object
- Object
- Mongrel2::Response
- Extended by:
- Loggability
- Defined in:
- lib/mongrel2/response.rb
Overview
The Mongrel2 Response base class.
Direct Known Subclasses
Constant Summary collapse
- DEFAULT_CHUNKSIZE =
The default number of bytes of the response body to send to the mongrel2 server at a time.
1024 * 512
Instance Attribute Summary collapse
-
#body ⇒ Object
The body of the response as an IO (or IOish) object.
-
#chunksize ⇒ Object
The number of bytes to write to Mongrel in a single “chunk”.
-
#conn_id ⇒ Object
The response’s connection ID; this corresponds to the identifier of the connection the response will be routed to by the mongrel2 server.
-
#extended_reply_data ⇒ Object
readonly
The Array of data to include with the extended reply.
-
#extended_reply_filter ⇒ Object
readonly
The name of the extended reply filter to use in the reply.
-
#request ⇒ Object
The request that this response is for, if there is one.
-
#sender_id ⇒ Object
The response’s UUID; this corresponds to the mongrel2 server the response will be routed to by the Connection.
Class Method Summary collapse
-
.from_request(request) ⇒ Object
Create a response to the specified
request
and return it.
Instance Method Summary collapse
-
#<<(object) ⇒ Object
Append the given
object
to the response body. -
#each_chunk ⇒ Object
Yield chunks of the response to the caller’s block.
-
#extend_reply_with(filter) ⇒ Object
(also: #extended_reply_with)
Set up the response to send an extended reply to Mongrel2, invoking the given
filter
. -
#extended_reply? ⇒ Boolean
Returns
true
if the response has been set to use an extended reply. -
#initialize(sender_id, conn_id, body = '') ⇒ Response
constructor
Create a new Response object for the specified
sender_id
,conn_id
, andbody
. -
#inspect ⇒ Object
Returns a string containing a human-readable representation of the Response, suitable for debugging.
-
#puts(*objects) ⇒ Object
Write the given
objects
to the response body, calling #to_s on each one. -
#to_s ⇒ Object
Stringify the response, which just returns its body.
Constructor Details
#initialize(sender_id, conn_id, body = '') ⇒ Response
Create a new Response object for the specified sender_id
, conn_id
, and body
.
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/mongrel2/response.rb', line 34 def initialize( sender_id, conn_id, body='' ) body = StringIO.new( body, 'a+' ) unless body.respond_to?( :read ) @sender_id = sender_id @conn_id = conn_id @body = body @request = nil @chunksize = DEFAULT_CHUNKSIZE @extended_reply_filter = nil @extended_reply_data = [] end |
Instance Attribute Details
#body ⇒ Object
The body of the response as an IO (or IOish) object
60 61 62 |
# File 'lib/mongrel2/response.rb', line 60 def body @body end |
#chunksize ⇒ Object
The number of bytes to write to Mongrel in a single “chunk”
66 67 68 |
# File 'lib/mongrel2/response.rb', line 66 def chunksize @chunksize end |
#conn_id ⇒ Object
The response’s connection ID; this corresponds to the identifier of the connection the response will be routed to by the mongrel2 server
57 58 59 |
# File 'lib/mongrel2/response.rb', line 57 def conn_id @conn_id end |
#extended_reply_data ⇒ Object (readonly)
The Array of data to include with the extended reply
73 74 75 |
# File 'lib/mongrel2/response.rb', line 73 def extended_reply_data @extended_reply_data end |
#extended_reply_filter ⇒ Object (readonly)
The name of the extended reply filter to use in the reply. If this is set the response will be send back to Mongrel as an extended reply.
70 71 72 |
# File 'lib/mongrel2/response.rb', line 70 def extended_reply_filter @extended_reply_filter end |
#request ⇒ Object
The request that this response is for, if there is one
63 64 65 |
# File 'lib/mongrel2/response.rb', line 63 def request @request end |
#sender_id ⇒ Object
The response’s UUID; this corresponds to the mongrel2 server the response will be routed to by the Connection.
53 54 55 |
# File 'lib/mongrel2/response.rb', line 53 def sender_id @sender_id end |
Class Method Details
.from_request(request) ⇒ Object
Create a response to the specified request
and return it.
24 25 26 27 28 29 30 |
# File 'lib/mongrel2/response.rb', line 24 def self::from_request( request ) self.log.debug "Creating a %p to request %p" % [ self, request ] response = new( request.sender_id, request.conn_id ) response.request = request return response end |
Instance Method Details
#<<(object) ⇒ Object
Append the given object
to the response body. Returns the response for chaining.
86 87 88 89 |
# File 'lib/mongrel2/response.rb', line 86 def <<( object ) self.body << object return self end |
#each_chunk ⇒ Object
Yield chunks of the response to the caller’s block. By default, just yields the result of calling #to_s on the response.
125 126 127 128 129 130 131 |
# File 'lib/mongrel2/response.rb', line 125 def each_chunk if block_given? yield( self.to_s ) else return [ self.to_s ].to_enum end end |
#extend_reply_with(filter) ⇒ Object Also known as: extended_reply_with
Set up the response to send an extended reply to Mongrel2, invoking the given filter
. The body of the response will be passed to the filter after being serialized to a tnetstring.
101 102 103 |
# File 'lib/mongrel2/response.rb', line 101 def extend_reply_with( filter ) @extended_reply_filter = filter end |
#extended_reply? ⇒ Boolean
Returns true
if the response has been set to use an extended reply.
108 109 110 |
# File 'lib/mongrel2/response.rb', line 108 def extended_reply? return @extended_reply_filter ? true : false end |
#inspect ⇒ Object
Returns a string containing a human-readable representation of the Response, suitable for debugging.
136 137 138 139 140 141 142 143 144 |
# File 'lib/mongrel2/response.rb', line 136 def inspect return "#<%p:0x%016x %s (%s/%d)>" % [ self.class, self.object_id * 2, self.inspect_details, self.sender_id, self.conn_id ] end |
#puts(*objects) ⇒ Object
Write the given objects
to the response body, calling #to_s on each one.
93 94 95 |
# File 'lib/mongrel2/response.rb', line 93 def puts( *objects ) self.body.puts( *objects ) end |
#to_s ⇒ Object
Stringify the response, which just returns its body.
114 115 116 117 118 119 120 |
# File 'lib/mongrel2/response.rb', line 114 def to_s pos = self.body.pos self.body.pos = 0 return self.body.read ensure self.body.pos = pos end |