Files
EWF/library/server/ewsgi/src/implementation/wgi_response_stream.e
Jocelyn Fiat b541efcc8f Now WGI_RESPONSE.set_status_code (..) has a new argument to pass optional custom reason phrase.
This is a minor breaking change (but prior to the first release, so acceptable)
   And then it is now possible to precise a custom reason phrase (useful for 4xx and 5xx response)

At the WSF_RESPONSE level, the status code is now sent only when the header are sent.
thus, it is possible to change the status code as long as no header is sent.
(in the future, we should also try to delay the sending of headers)

Removed WGI_RESPONSE.put_header_lines (..) which was not used, and WGI is not meant to provide such user friendly features
Now this is available directly on WSF_RESPONSE
2012-04-12 11:19:41 +02:00

141 lines
2.8 KiB
Plaintext

note
description: "[
WGI Response implemented using stream buffer
]"
date: "$Date$"
revision: "$Revision$"
class
WGI_RESPONSE_STREAM
inherit
WGI_RESPONSE
create
make
feature {NONE} -- Initialization
make (a_output: like output; a_error: like error)
do
output := a_output
error := a_error
end
feature {WGI_CONNECTOR, WGI_SERVICE} -- Commit
commit
-- Commit the current response
do
output.flush
message_committed := True
end
feature -- Status report
status_committed: BOOLEAN
-- Status code set and committed?
header_committed: BOOLEAN
-- Header committed?
message_committed: BOOLEAN
-- Message committed?
message_writable: BOOLEAN
-- Can message be written?
do
Result := status_is_set and header_committed
end
feature -- Status setting
status_is_set: BOOLEAN
-- Is status set?
do
Result := status_code > 0
end
set_status_code (a_code: INTEGER; a_reason_phrase: detachable READABLE_STRING_8)
-- Set response status code
-- Should be done before sending any data back to the client
do
status_code := a_code
status_reason_phrase := a_reason_phrase
output.put_status_line (a_code, a_reason_phrase)
status_committed := True
end
status_code: INTEGER
-- Response status
status_reason_phrase: detachable READABLE_STRING_8
-- Custom status reason phrase for the Response (optional)
feature -- Header output operation
put_header_text (a_text: READABLE_STRING_8)
do
output.put_string (a_text)
output.put_crlf
header_committed := True
end
feature -- Output operation
put_character (c: CHARACTER_8)
-- Send the character `c'
do
output.put_character (c)
end
put_string (s: READABLE_STRING_8)
-- Send the string `s'
do
output.put_string (s)
end
put_substring (s: READABLE_STRING_8; start_index, end_index: INTEGER)
-- Send the substring `start_index:end_index]'
--| Could be optimized according to the target output
do
output.put_substring (s, start_index, end_index)
end
flush
do
output.flush
end
feature -- Error reporting
put_error (a_message: READABLE_STRING_8)
-- Report error described by `a_message'
-- This might be used by the underlying connector
do
if attached error as err then
err.put_error (a_message)
end
end
feature {NONE} -- Implementation: Access
output: WGI_OUTPUT_STREAM
-- Server output channel
error: detachable WGI_ERROR_STREAM
-- Server output channel
;note
copyright: "2011-2012, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
source: "[
Eiffel Software
5949 Hollister Ave., Goleta, CA 93117 USA
Telephone 805-685-1006, Fax 805-685-6869
Website http://www.eiffel.com
Customer support http://support.eiffel.com
]"
end