diff --git a/library/server/ewsgi/connectors/cgi/cgi-safe.ecf b/library/server/ewsgi/connectors/cgi/cgi-safe.ecf
index a1900388..af6c0537 100644
--- a/library/server/ewsgi/connectors/cgi/cgi-safe.ecf
+++ b/library/server/ewsgi/connectors/cgi/cgi-safe.ecf
@@ -10,7 +10,8 @@
-
+
+
diff --git a/library/server/ewsgi/connectors/cgi/cgi.ecf b/library/server/ewsgi/connectors/cgi/cgi.ecf
index 412abe6b..c5039dd5 100644
--- a/library/server/ewsgi/connectors/cgi/cgi.ecf
+++ b/library/server/ewsgi/connectors/cgi/cgi.ecf
@@ -10,7 +10,8 @@
-
+
+
diff --git a/library/server/ewsgi/connectors/cgi/src/gw_cgi_connector.e b/library/server/ewsgi/connectors/cgi/src/gw_cgi_connector.e
index 9d85012b..d4768af1 100644
--- a/library/server/ewsgi/connectors/cgi/src/gw_cgi_connector.e
+++ b/library/server/ewsgi/connectors/cgi/src/gw_cgi_connector.e
@@ -8,7 +8,7 @@ class
GW_CGI_CONNECTOR
inherit
- GW_CONNECTOR
+ EWSGI_CONNECTOR
create
make
@@ -17,7 +17,7 @@ feature -- Execution
launch
local
- env: GW_ENVIRONMENT_VARIABLES
+ env: EWSGI_ENVIRONMENT_VARIABLES
do
create env.make_with_variables ((create {EXECUTION_ENVIRONMENT}).starting_environment_variables)
application.process (env, create {GW_CGI_INPUT_STREAM}.make, create {GW_CGI_OUTPUT_STREAM}.make)
diff --git a/library/server/ewsgi/connectors/cgi/src/gw_cgi_input_stream.e b/library/server/ewsgi/connectors/cgi/src/gw_cgi_input_stream.e
index 0a49425d..0351cde3 100644
--- a/library/server/ewsgi/connectors/cgi/src/gw_cgi_input_stream.e
+++ b/library/server/ewsgi/connectors/cgi/src/gw_cgi_input_stream.e
@@ -9,7 +9,7 @@ class
GW_CGI_INPUT_STREAM
inherit
- GW_INPUT_STREAM
+ EWSGI_INPUT_STREAM
CONSOLE
rename
diff --git a/library/server/ewsgi/connectors/cgi/src/gw_cgi_output_stream.e b/library/server/ewsgi/connectors/cgi/src/gw_cgi_output_stream.e
index 072caa99..b506736f 100644
--- a/library/server/ewsgi/connectors/cgi/src/gw_cgi_output_stream.e
+++ b/library/server/ewsgi/connectors/cgi/src/gw_cgi_output_stream.e
@@ -9,7 +9,7 @@ class
GW_CGI_OUTPUT_STREAM
inherit
- GW_OUTPUT_STREAM
+ EWSGI_OUTPUT_STREAM
undefine
flush
end
@@ -19,6 +19,11 @@ inherit
make as console_make
end
+ HTTP_STATUS_CODE_MESSAGES
+ export
+ {NONE} all
+ end
+
create
make
@@ -29,6 +34,26 @@ feature {NONE} -- Initialization
make_open_stdout ("stdout")
end
+feature -- Status writing
+
+ put_status_line (a_code: INTEGER)
+ -- Put status code line for `a_code'
+ --| Note this is a default implementation, and could be redefined
+ --| for instance in relation to NPH CGI script
+ local
+ s: STRING
+ do
+ create s.make (16)
+ s.append ({HTTP_CONSTANTS}.http_version_1_1)
+ s.append_character (' ')
+ s.append_integer (a_code)
+ if attached http_status_code_message (a_code) as l_status_message then
+ s.append_character (' ')
+ s.append_string (l_status_message)
+ end
+ put_header_line (s)
+ end
+
note
copyright: "2011-2011, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
diff --git a/library/server/ewsgi/connectors/libfcgi/libfcgi-safe.ecf b/library/server/ewsgi/connectors/libfcgi/libfcgi-safe.ecf
index d02b81dd..e4e72c59 100644
--- a/library/server/ewsgi/connectors/libfcgi/libfcgi-safe.ecf
+++ b/library/server/ewsgi/connectors/libfcgi/libfcgi-safe.ecf
@@ -10,8 +10,9 @@
-
+
+
diff --git a/library/server/ewsgi/connectors/libfcgi/libfcgi.ecf b/library/server/ewsgi/connectors/libfcgi/libfcgi.ecf
index 3eb715f7..247e480f 100644
--- a/library/server/ewsgi/connectors/libfcgi/libfcgi.ecf
+++ b/library/server/ewsgi/connectors/libfcgi/libfcgi.ecf
@@ -10,8 +10,9 @@
-
-
+
+
+
diff --git a/library/server/ewsgi/connectors/libfcgi/src/gw_libfcgi_connector.e b/library/server/ewsgi/connectors/libfcgi/src/gw_libfcgi_connector.e
index aa2a8a52..401b2794 100644
--- a/library/server/ewsgi/connectors/libfcgi/src/gw_libfcgi_connector.e
+++ b/library/server/ewsgi/connectors/libfcgi/src/gw_libfcgi_connector.e
@@ -9,7 +9,7 @@ class
GW_LIBFCGI_CONNECTOR
inherit
- GW_CONNECTOR
+ EWSGI_CONNECTOR
redefine
initialize
end
@@ -46,7 +46,7 @@ feature -- Execution
process_fcgi_request (vars: HASH_TABLE [STRING, STRING]; a_input: like input; a_output: like output)
local
- gw_env: GW_ENVIRONMENT_VARIABLES
+ gw_env: EWSGI_ENVIRONMENT_VARIABLES
do
create gw_env.make_with_variables (vars)
application.process (gw_env, a_input, a_output)
@@ -54,10 +54,10 @@ feature -- Execution
feature -- Input/Output
- input: GW_INPUT_STREAM
+ input: EWSGI_INPUT_STREAM
-- Input from client (from httpd server via FCGI)
- output: GW_OUTPUT_STREAM
+ output: EWSGI_OUTPUT_STREAM
-- Output to client (via httpd server/fcgi)
feature {NONE} -- Implementation
diff --git a/library/server/ewsgi/connectors/libfcgi/src/gw_libfcgi_input_stream.e b/library/server/ewsgi/connectors/libfcgi/src/gw_libfcgi_input_stream.e
index 5f757c0a..918b28c6 100644
--- a/library/server/ewsgi/connectors/libfcgi/src/gw_libfcgi_input_stream.e
+++ b/library/server/ewsgi/connectors/libfcgi/src/gw_libfcgi_input_stream.e
@@ -9,7 +9,7 @@ class
GW_LIBFCGI_INPUT_STREAM
inherit
- GW_INPUT_STREAM
+ EWSGI_INPUT_STREAM
STRING_HANDLER
diff --git a/library/server/ewsgi/connectors/libfcgi/src/gw_libfcgi_output_stream.e b/library/server/ewsgi/connectors/libfcgi/src/gw_libfcgi_output_stream.e
index a26b4b18..2b9b4a0e 100644
--- a/library/server/ewsgi/connectors/libfcgi/src/gw_libfcgi_output_stream.e
+++ b/library/server/ewsgi/connectors/libfcgi/src/gw_libfcgi_output_stream.e
@@ -9,7 +9,12 @@ class
GW_LIBFCGI_OUTPUT_STREAM
inherit
- GW_OUTPUT_STREAM
+ EWSGI_OUTPUT_STREAM
+
+ HTTP_STATUS_CODE_MESSAGES
+ export
+ {NONE} all
+ end
create
make
@@ -23,6 +28,26 @@ feature {NONE} -- Initialization
fcgi := a_fcgi
end
+feature -- Status writing
+
+ put_status_line (a_code: INTEGER)
+ -- Put status code line for `a_code'
+ --| Note this is a default implementation, and could be redefined
+ --| for instance in relation to NPH CGI script
+ local
+ s: STRING
+ do
+ create s.make (16)
+ s.append ({HTTP_CONSTANTS}.http_version_1_1)
+ s.append_character (' ')
+ s.append_integer (a_code)
+ if attached http_status_code_message (a_code) as l_status_message then
+ s.append_character (' ')
+ s.append_string (l_status_message)
+ end
+ put_header_line (s)
+ end
+
feature -- Basic operation
put_string (s: STRING)
diff --git a/library/server/ewsgi/connectors/nino/nino-safe.ecf b/library/server/ewsgi/connectors/nino/nino-safe.ecf
index 1b3cbefb..633e055f 100644
--- a/library/server/ewsgi/connectors/nino/nino-safe.ecf
+++ b/library/server/ewsgi/connectors/nino/nino-safe.ecf
@@ -10,8 +10,12 @@
+
-
+
+
+
+
diff --git a/library/server/ewsgi/connectors/nino/nino.ecf b/library/server/ewsgi/connectors/nino/nino.ecf
index 97a1099a..2b6d9204 100644
--- a/library/server/ewsgi/connectors/nino/nino.ecf
+++ b/library/server/ewsgi/connectors/nino/nino.ecf
@@ -10,8 +10,12 @@
-
-
+
+
+
+
+
+
diff --git a/library/server/ewsgi/connectors/nino/src/gw_nino_connector.e b/library/server/ewsgi/connectors/nino/src/gw_nino_connector.e
index 3d7ea435..010ba4a2 100644
--- a/library/server/ewsgi/connectors/nino/src/gw_nino_connector.e
+++ b/library/server/ewsgi/connectors/nino/src/gw_nino_connector.e
@@ -8,7 +8,7 @@ class
GW_NINO_CONNECTOR
inherit
- GW_CONNECTOR
+ EWSGI_CONNECTOR
redefine
initialize
end
@@ -62,7 +62,7 @@ feature -- Server
local
l_http_handler : HTTP_HANDLER
do
- create {GW_NINO_HANDLER} l_http_handler.make_with_callback (server, "GW_NINO_HANDLER", Current)
+ create {GW_NINO_HANDLER} l_http_handler.make_with_callback (server, "NINO_HANDLER", Current)
debug ("nino")
if attached base as l_base then
print ("Base=" + l_base + "%N")
@@ -73,7 +73,7 @@ feature -- Server
process_request (env: HASH_TABLE [STRING, STRING]; a_headers_text: STRING; a_input: HTTP_INPUT_STREAM; a_output: HTTP_OUTPUT_STREAM)
local
- gw_env: GW_ENVIRONMENT_VARIABLES
+ gw_env: EWSGI_ENVIRONMENT_VARIABLES
do
create gw_env.make_with_variables (env)
gw_env.set_variable ("RAW_HEADER_DATA", a_headers_text)
diff --git a/library/server/ewsgi/connectors/nino/src/gw_nino_input_stream.e b/library/server/ewsgi/connectors/nino/src/gw_nino_input_stream.e
index 8a02f0d3..c44723f1 100644
--- a/library/server/ewsgi/connectors/nino/src/gw_nino_input_stream.e
+++ b/library/server/ewsgi/connectors/nino/src/gw_nino_input_stream.e
@@ -9,7 +9,7 @@ class
GW_NINO_INPUT_STREAM
inherit
- GW_INPUT_STREAM
+ EWSGI_INPUT_STREAM
create
make
@@ -22,7 +22,7 @@ feature {NONE} -- Initialization
set_nino_input (a_nino_input)
end
-feature {GW_NINO_CONNECTOR, GW_APPLICATION} -- Nino
+feature {GW_NINO_CONNECTOR, EWSGI_APPLICATION} -- Nino
set_nino_input (i: like nino_input)
do
diff --git a/library/server/ewsgi/connectors/nino/src/gw_nino_output_stream.e b/library/server/ewsgi/connectors/nino/src/gw_nino_output_stream.e
index 045d07ce..792e3db5 100644
--- a/library/server/ewsgi/connectors/nino/src/gw_nino_output_stream.e
+++ b/library/server/ewsgi/connectors/nino/src/gw_nino_output_stream.e
@@ -9,7 +9,12 @@ class
GW_NINO_OUTPUT_STREAM
inherit
- GW_OUTPUT_STREAM
+ EWSGI_OUTPUT_STREAM
+
+ HTTP_STATUS_CODE_MESSAGES
+ export
+ {NONE} all
+ end
create
make
@@ -21,7 +26,7 @@ feature {NONE} -- Initialization
set_nino_output (a_nino_output)
end
-feature {GW_NINO_CONNECTOR, GW_APPLICATION} -- Nino
+feature {GW_NINO_CONNECTOR, EWSGI_APPLICATION} -- Nino
set_nino_output (o: like nino_output)
do
@@ -30,6 +35,26 @@ feature {GW_NINO_CONNECTOR, GW_APPLICATION} -- Nino
nino_output: HTTP_OUTPUT_STREAM
+feature -- Status writing
+
+ put_status_line (a_code: INTEGER)
+ -- Put status code line for `a_code'
+ --| Note this is a default implementation, and could be redefined
+ --| for instance in relation to NPH CGI script
+ local
+ s: STRING
+ do
+ create s.make (16)
+ s.append ({HTTP_CONSTANTS}.http_version_1_1)
+ s.append_character (' ')
+ s.append_integer (a_code)
+ if attached http_status_code_message (a_code) as l_status_message then
+ s.append_character (' ')
+ s.append_string (l_status_message)
+ end
+ put_header_line (s)
+ end
+
feature -- Basic operation
put_string (s: STRING_8)
diff --git a/library/server/ewsgi/ewsgi-full.ecf b/library/server/ewsgi/ewsgi-full.ecf
index 72ab05f3..cab454ea 100644
--- a/library/server/ewsgi/ewsgi-full.ecf
+++ b/library/server/ewsgi/ewsgi-full.ecf
@@ -1,6 +1,6 @@
-
-
+
+
/EIFGENs$
@@ -10,9 +10,10 @@
+
-
+
diff --git a/library/server/ewsgi/ewsgi.ecf b/library/server/ewsgi/ewsgi.ecf
index ab38f6a7..bde71ac5 100644
--- a/library/server/ewsgi/ewsgi.ecf
+++ b/library/server/ewsgi/ewsgi.ecf
@@ -12,9 +12,9 @@
-
+
-
+
diff --git a/library/server/ewsgi/ewsgi_specification-safe.ecf b/library/server/ewsgi/ewsgi_specification-safe.ecf
index 6df5cf06..b66cd0e8 100644
--- a/library/server/ewsgi/ewsgi_specification-safe.ecf
+++ b/library/server/ewsgi/ewsgi_specification-safe.ecf
@@ -11,8 +11,6 @@
-
-
diff --git a/library/server/ewsgi/ewsgi_specification.ecf b/library/server/ewsgi/ewsgi_specification.ecf
index 5c9dc7dc..b0721d07 100644
--- a/library/server/ewsgi/ewsgi_specification.ecf
+++ b/library/server/ewsgi/ewsgi_specification.ecf
@@ -11,8 +11,6 @@
-
-
diff --git a/library/server/ewsgi/examples/hello_world/hello-safe.ecf b/library/server/ewsgi/examples/hello_world/hello-safe.ecf
index 76cdb452..753af7c2 100644
--- a/library/server/ewsgi/examples/hello_world/hello-safe.ecf
+++ b/library/server/ewsgi/examples/hello_world/hello-safe.ecf
@@ -12,6 +12,7 @@
+
diff --git a/library/server/ewsgi/examples/hello_world/src/hello_world.e b/library/server/ewsgi/examples/hello_world/src/hello_world.e
index 591a1075..d920c7de 100644
--- a/library/server/ewsgi/examples/hello_world/src/hello_world.e
+++ b/library/server/ewsgi/examples/hello_world/src/hello_world.e
@@ -18,7 +18,7 @@ feature {NONE} -- Initialization
(create {GW_NINO_APPLICATION}.make_custom (agent execute, "")).listen (port_number)
end
- execute (req: GW_REQUEST; res: GW_RESPONSE)
+ execute (req: EWSGI_REQUEST; res: EWSGI_RESPONSE)
do
res.write_header (200, <<["Content-Type", "text/plain"]>>)
res.write_string ("Hello World!%N")
diff --git a/library/server/ewsgi/specification/ewsgi_agent_application.e b/library/server/ewsgi/specification/ewsgi_agent_application.e
new file mode 100644
index 00000000..58f45846
--- /dev/null
+++ b/library/server/ewsgi/specification/ewsgi_agent_application.e
@@ -0,0 +1,66 @@
+note
+ description: "Summary description for {EWSGI_AGENT_APPLICATION}."
+ author: ""
+ date: "$Date$"
+ revision: "$Revision$"
+
+class
+ EWSGI_AGENT_APPLICATION
+
+inherit
+ EWSGI_APPLICATION
+
+create
+ make
+
+feature {NONE} -- Implementation
+
+ make (a_callback: like callback; a_request_creator: like request_creator; a_response_creator: like response_creator)
+ -- Initialize `Current'.
+ do
+ callback := a_callback
+ request_creator := a_request_creator
+ response_creator := a_response_creator
+ end
+
+feature {NONE} -- Implementation
+
+ request_creator: FUNCTION [ANY, TUPLE [env: EWSGI_ENVIRONMENT; input: EWSGI_INPUT_STREAM], EWSGI_REQUEST]
+
+ response_creator: FUNCTION [ANY, TUPLE [req: EWSGI_REQUEST; output: EWSGI_OUTPUT_STREAM], EWSGI_RESPONSE]
+
+ callback: PROCEDURE [ANY, TUPLE [req: like new_request; res: like new_response]]
+ -- Procedure called on `execute'
+
+ execute (req: like new_request; res: like new_response)
+ -- Execute the request
+ do
+ callback.call ([req, res])
+ end
+
+feature -- Factory
+
+ new_request (env: EWSGI_ENVIRONMENT; a_input: EWSGI_INPUT_STREAM): EWSGI_REQUEST
+ do
+ Result := request_creator.item ([env, a_input])
+ end
+
+ new_response (req: EWSGI_REQUEST; a_output: EWSGI_OUTPUT_STREAM): EWSGI_RESPONSE
+ do
+ Result := response_creator.item ([req, a_output])
+ end
+
+invariant
+ callback_attached: callback /= Void
+
+note
+ copyright: "2011-2011, 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
diff --git a/library/server/ewsgi/src/request/gw_environment_variables.e b/library/server/ewsgi/specification/implementation/ewsgi_environment_variables.e
similarity index 98%
rename from library/server/ewsgi/src/request/gw_environment_variables.e
rename to library/server/ewsgi/specification/implementation/ewsgi_environment_variables.e
index 54ca05d7..bdb7cdf1 100644
--- a/library/server/ewsgi/src/request/gw_environment_variables.e
+++ b/library/server/ewsgi/specification/implementation/ewsgi_environment_variables.e
@@ -1,12 +1,12 @@
note
- description: "Summary description for {GW_ENVIRONMENT_VARIABLES}."
+ description: "Summary description for {EWSGI_ENVIRONMENT_VARIABLES}."
legal: "See notice at end of class."
status: "See notice at end of class."
date: "$Date$"
revision: "$Revision$"
class
- GW_ENVIRONMENT_VARIABLES
+ EWSGI_ENVIRONMENT_VARIABLES
inherit
EWSGI_ENVIRONMENT
diff --git a/library/server/ewsgi/specification/stream/ewsgi_output_stream.e b/library/server/ewsgi/specification/stream/ewsgi_output_stream.e
index f106c7ae..1f7c6fce 100644
--- a/library/server/ewsgi/specification/stream/ewsgi_output_stream.e
+++ b/library/server/ewsgi/specification/stream/ewsgi_output_stream.e
@@ -10,14 +10,6 @@ note
deferred class
EWSGI_OUTPUT_STREAM
-inherit
- ANY
-
- HTTP_STATUS_CODE_MESSAGES
- export
- {NONE} all
- end
-
feature -- Core operation
put_string (s: STRING_8)
@@ -38,18 +30,7 @@ feature -- Status writing
-- Put status code line for `a_code'
--| Note this is a default implementation, and could be redefined
--| for instance in relation to NPH CGI script
- local
- s: STRING
- do
- create s.make (16)
- s.append ({HTTP_CONSTANTS}.http_version_1_1)
- s.append_character (' ')
- s.append_integer (a_code)
- if attached http_status_code_message (a_code) as l_status_message then
- s.append_character (' ')
- s.append_string (l_status_message)
- end
- put_header_line (s)
+ deferred
end
feature -- Basic operation
diff --git a/library/server/ewsgi/src/implementation/gw_agent_application.e b/library/server/ewsgi/src/application/gw_agent_application.e
similarity index 93%
rename from library/server/ewsgi/src/implementation/gw_agent_application.e
rename to library/server/ewsgi/src/application/gw_agent_application.e
index 4f8a9c0d..ec796f65 100644
--- a/library/server/ewsgi/src/implementation/gw_agent_application.e
+++ b/library/server/ewsgi/src/application/gw_agent_application.e
@@ -1,5 +1,5 @@
note
- description: "Summary description for {GW_AGENT_APPLICATION}."
+ description: "Summary description for {EWSGI_AGENT_APPLICATION}."
author: ""
date: "$Date$"
revision: "$Revision$"
diff --git a/library/server/ewsgi/src/implementation/gw_application_imp.e b/library/server/ewsgi/src/application/gw_application_imp.e
similarity index 100%
rename from library/server/ewsgi/src/implementation/gw_application_imp.e
rename to library/server/ewsgi/src/application/gw_application_imp.e
diff --git a/library/server/ewsgi/src/implementation/in_memory/gw_in_memory_response_application.e b/library/server/ewsgi/src/application/gw_in_memory_response_application.e
similarity index 100%
rename from library/server/ewsgi/src/implementation/in_memory/gw_in_memory_response_application.e
rename to library/server/ewsgi/src/application/gw_in_memory_response_application.e
diff --git a/library/server/ewsgi/src/implementation/gw_request_imp.e b/library/server/ewsgi/src/request/gw_request_imp.e
similarity index 100%
rename from library/server/ewsgi/src/implementation/gw_request_imp.e
rename to library/server/ewsgi/src/request/gw_request_imp.e
diff --git a/library/server/ewsgi/src/implementation/in_memory/gw_in_memory_response.e b/library/server/ewsgi/src/response/gw_in_memory_response.e
similarity index 100%
rename from library/server/ewsgi/src/implementation/in_memory/gw_in_memory_response.e
rename to library/server/ewsgi/src/response/gw_in_memory_response.e
diff --git a/library/server/ewsgi/src/gw_error.e b/library/server/ewsgi/src/support/gw_error.e
similarity index 100%
rename from library/server/ewsgi/src/gw_error.e
rename to library/server/ewsgi/src/support/gw_error.e
diff --git a/library/server/ewsgi/src/response/gw_header.e b/library/server/ewsgi/src/support/gw_header.e
similarity index 100%
rename from library/server/ewsgi/src/response/gw_header.e
rename to library/server/ewsgi/src/support/gw_header.e