Merged DbC and cosmetic related changes from remote-tracking branch 'javier/concurrent_httpd'.

This commit is contained in:
2015-04-07 14:40:03 +02:00
27 changed files with 128 additions and 60 deletions
@@ -1,6 +1,5 @@
note note
description: "Summary description for {APPLICATION_EXECUTION}." description: "Summary description for {APPLICATION_EXECUTION}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -1,6 +1,5 @@
note note
description: "Summary description for {CONTACT_AUTOCOMPLETION}." description: "Summary description for {CONTACT_AUTOCOMPLETION}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -1,6 +1,5 @@
note note
description: "Summary description for {FLAG_AUTOCOMPLETION}." description: "Summary description for {FLAG_AUTOCOMPLETION}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -33,22 +32,22 @@ feature -- Implementation
list := <<["AF", {STRING_32} "Afghanistan"], ["AX", {STRING_32} "Åland Islands"], ["AL", {STRING_32} "Albania"], list := <<["AF", {STRING_32} "Afghanistan"], ["AX", {STRING_32} "Åland Islands"], ["AL", {STRING_32} "Albania"],
["DZ", {STRING_32} "Algeria"], ["AS", {STRING_32} "American Samoa"], ["DZ", {STRING_32} "Algeria"], ["AS", {STRING_32} "American Samoa"],
["AD", {STRING_32} "Andorra"], ["AO", {STRING_32} "Angola"], ["AI", {STRING_32} "Anguilla"], ["AD", {STRING_32} "Andorra"], ["AO", {STRING_32} "Angola"], ["AI", {STRING_32} "Anguilla"],
["AQ", {STRING_32} "Antarctica"], ["AG", {STRING_32} "Antigua and Barbuda"], ["AQ", {STRING_32} "Antarctica"], ["AG", {STRING_32} "Antigua and Barbuda"],
["AR", {STRING_32} "Argentina"], ["AM", {STRING_32} "Armenia"], ["AW", {STRING_32} "Aruba"], ["AR", {STRING_32} "Argentina"], ["AM", {STRING_32} "Armenia"], ["AW", {STRING_32} "Aruba"],
["AU", {STRING_32} "Australia"], ["AT", {STRING_32} "Austria"], ["AZ", {STRING_32} "Azerbaijan"], ["AU", {STRING_32} "Australia"], ["AT", {STRING_32} "Austria"], ["AZ", {STRING_32} "Azerbaijan"],
["BS", {STRING_32} "Bahamas"], ["BH", {STRING_32} "Bahrain"], ["BD", {STRING_32} "Bangladesh"], ["BS", {STRING_32} "Bahamas"], ["BH", {STRING_32} "Bahrain"], ["BD", {STRING_32} "Bangladesh"],
["BB", {STRING_32} "Barbados"], ["BY", {STRING_32} "Belarus"], ["BE", {STRING_32} "Belgium"], ["BB", {STRING_32} "Barbados"], ["BY", {STRING_32} "Belarus"], ["BE", {STRING_32} "Belgium"],
["BZ", {STRING_32} "Belize"], ["BJ", {STRING_32} "Benin"], ["BM", {STRING_32} "Bermuda"], ["BZ", {STRING_32} "Belize"], ["BJ", {STRING_32} "Benin"], ["BM", {STRING_32} "Bermuda"],
["BT", {STRING_32} "Bhutan"], ["BO", {STRING_32} "Bolivia, Plurinational State of"], ["BT", {STRING_32} "Bhutan"], ["BO", {STRING_32} "Bolivia, Plurinational State of"],
["BQ", {STRING_32} "Bonaire, Sint Eustatius and Saba"], ["BA", {STRING_32} "Bosnia and Herzegovina"], ["BQ", {STRING_32} "Bonaire, Sint Eustatius and Saba"], ["BA", {STRING_32} "Bosnia and Herzegovina"],
["BW", {STRING_32} "Botswana"], ["BV", {STRING_32} "Bouvet Island"], ["BW", {STRING_32} "Botswana"], ["BV", {STRING_32} "Bouvet Island"],
["BR", {STRING_32} "Brazil"], ["IO", {STRING_32} "British Indian Ocean Territory"], ["BR", {STRING_32} "Brazil"], ["IO", {STRING_32} "British Indian Ocean Territory"],
["BN", {STRING_32} "Brunei Darussalam"], ["BG", {STRING_32} "Bulgaria"], ["BN", {STRING_32} "Brunei Darussalam"], ["BG", {STRING_32} "Bulgaria"],
["BF", {STRING_32} "Burkina Faso"], ["BI", {STRING_32} "Burundi"], ["KH", {STRING_32} "Cambodia"], ["BF", {STRING_32} "Burkina Faso"], ["BI", {STRING_32} "Burundi"], ["KH", {STRING_32} "Cambodia"],
["CM", {STRING_32} "Cameroon"], ["CA", {STRING_32} "Canada"], ["CV", {STRING_32} "Cape Verde"], ["CM", {STRING_32} "Cameroon"], ["CA", {STRING_32} "Canada"], ["CV", {STRING_32} "Cape Verde"],
["KY", {STRING_32} "Cayman Islands"], ["CF", {STRING_32} "Central African Republic"], ["KY", {STRING_32} "Cayman Islands"], ["CF", {STRING_32} "Central African Republic"],
["TD", {STRING_32} "Chad"], ["CL", {STRING_32} "Chile"], ["CN", {STRING_32} "China"], ["TD", {STRING_32} "Chad"], ["CL", {STRING_32} "Chile"], ["CN", {STRING_32} "China"],
["CX", {STRING_32} "Christmas Island"], ["CC", {STRING_32} "Cocos (Keeling) Islands"], ["CX", {STRING_32} "Christmas Island"], ["CC", {STRING_32} "Cocos (Keeling) Islands"],
["CO", {STRING_32} "Colombia"], ["KM", {STRING_32} "Comoros"], ["CG", {STRING_32} "Congo"], ["CO", {STRING_32} "Colombia"], ["KM", {STRING_32} "Comoros"], ["CG", {STRING_32} "Congo"],
["CD", {STRING_32} "Congo, the Democratic Republic of the"], ["CK", {STRING_32} "Cook Islands"], ["CD", {STRING_32} "Congo, the Democratic Republic of the"], ["CK", {STRING_32} "Cook Islands"],
["CR", {STRING_32} "Costa Rica"], ["CI", {STRING_32} "Côte d'Ivoire"], ["CR", {STRING_32} "Costa Rica"], ["CI", {STRING_32} "Côte d'Ivoire"],
@@ -61,11 +60,11 @@ feature -- Implementation
["FO", {STRING_32} "Faroe Islands"], ["FJ", {STRING_32} "Fiji"], ["FI", {STRING_32} "Finland"], ["FO", {STRING_32} "Faroe Islands"], ["FJ", {STRING_32} "Fiji"], ["FI", {STRING_32} "Finland"],
["FR", {STRING_32} "France"], ["GF", {STRING_32} "French Guiana"], ["FR", {STRING_32} "France"], ["GF", {STRING_32} "French Guiana"],
["PF", {STRING_32} "French Polynesia"], ["TF", {STRING_32} "French Southern Territories"], ["PF", {STRING_32} "French Polynesia"], ["TF", {STRING_32} "French Southern Territories"],
["GA", {STRING_32} "Gabon"], ["GM", {STRING_32} "Gambia"], ["GE", {STRING_32} "Georgia"], ["GA", {STRING_32} "Gabon"], ["GM", {STRING_32} "Gambia"], ["GE", {STRING_32} "Georgia"],
["DE", {STRING_32} "Germany"], ["GH", {STRING_32} "Ghana"], ["GI", {STRING_32} "Gibraltar"], ["DE", {STRING_32} "Germany"], ["GH", {STRING_32} "Ghana"], ["GI", {STRING_32} "Gibraltar"],
["GR", {STRING_32} "Greece"], ["GL", {STRING_32} "Greenland"], ["GD", {STRING_32} "Grenada"], ["GR", {STRING_32} "Greece"], ["GL", {STRING_32} "Greenland"], ["GD", {STRING_32} "Grenada"],
["GP", {STRING_32} "Guadeloupe"], ["GU", {STRING_32} "Guam"], ["GT", {STRING_32} "Guatemala"], ["GP", {STRING_32} "Guadeloupe"], ["GU", {STRING_32} "Guam"], ["GT", {STRING_32} "Guatemala"],
["GG", {STRING_32} "Guernsey"], ["GN", {STRING_32} "Guinea"], ["GW", {STRING_32} "Guinea-Bissau"], ["GG", {STRING_32} "Guernsey"], ["GN", {STRING_32} "Guinea"], ["GW", {STRING_32} "Guinea-Bissau"],
["GY", {STRING_32} "Guyana"], ["HT", {STRING_32} "Haiti"], ["HM", {STRING_32} "Heard Island and McDonald Islands"], ["GY", {STRING_32} "Guyana"], ["HT", {STRING_32} "Haiti"], ["HM", {STRING_32} "Heard Island and McDonald Islands"],
["VA", {STRING_32} "Holy See (Vatican City State)"], ["VA", {STRING_32} "Holy See (Vatican City State)"],
["HN", {STRING_32} "Honduras"], ["HK", {STRING_32} "Hong Kong"], ["HU", {STRING_32} "Hungary"], ["HN", {STRING_32} "Honduras"], ["HK", {STRING_32} "Hong Kong"], ["HU", {STRING_32} "Hungary"],
@@ -92,41 +91,41 @@ feature -- Implementation
["NA", {STRING_32} "Namibia"], ["NR", {STRING_32} "Nauru"], ["NP", {STRING_32} "Nepal"], ["NA", {STRING_32} "Namibia"], ["NR", {STRING_32} "Nauru"], ["NP", {STRING_32} "Nepal"],
["NL", {STRING_32} "Netherlands"], ["NC", {STRING_32} "New Caledonia"], ["NZ", {STRING_32} "New Zealand"], ["NL", {STRING_32} "Netherlands"], ["NC", {STRING_32} "New Caledonia"], ["NZ", {STRING_32} "New Zealand"],
["NI", {STRING_32} "Nicaragua"], ["NE", {STRING_32} "Niger"], ["NI", {STRING_32} "Nicaragua"], ["NE", {STRING_32} "Niger"],
["NG", {STRING_32} "Nigeria"], ["NU", {STRING_32} "Niue"], ["NF", {STRING_32} "Norfolk Island"], ["NG", {STRING_32} "Nigeria"], ["NU", {STRING_32} "Niue"], ["NF", {STRING_32} "Norfolk Island"],
["MP", {STRING_32} "Northern Mariana Islands"], ["NO", {STRING_32} "Norway"], ["MP", {STRING_32} "Northern Mariana Islands"], ["NO", {STRING_32} "Norway"],
["OM", {STRING_32} "Oman"], ["PK", {STRING_32} "Pakistan"], ["PW", {STRING_32} "Palau"], ["OM", {STRING_32} "Oman"], ["PK", {STRING_32} "Pakistan"], ["PW", {STRING_32} "Palau"],
["PS", {STRING_32} "Palestinian Territory, Occupied"], ["PA", {STRING_32} "Panama"], ["PS", {STRING_32} "Palestinian Territory, Occupied"], ["PA", {STRING_32} "Panama"],
["PG", {STRING_32} "Papua New Guinea"], ["PY", {STRING_32} "Paraguay"], ["PE", {STRING_32} "Peru"], ["PG", {STRING_32} "Papua New Guinea"], ["PY", {STRING_32} "Paraguay"], ["PE", {STRING_32} "Peru"],
["PH", {STRING_32} "Philippines"], ["PN", {STRING_32} "Pitcairn"], ["PH", {STRING_32} "Philippines"], ["PN", {STRING_32} "Pitcairn"],
["PL", {STRING_32} "Poland"], ["PT", {STRING_32} "Portugal"], ["PR", {STRING_32} "Puerto Rico"], ["PL", {STRING_32} "Poland"], ["PT", {STRING_32} "Portugal"], ["PR", {STRING_32} "Puerto Rico"],
["QA", {STRING_32} "Qatar"], ["RE", {STRING_32} "Réunion"], ["RO", {STRING_32} "Romania"], ["QA", {STRING_32} "Qatar"], ["RE", {STRING_32} "Réunion"], ["RO", {STRING_32} "Romania"],
["RU", {STRING_32} "Russian Federation"], ["RW", {STRING_32} "Rwanda"], ["BL", {STRING_32} "Saint Barthélemy"], ["RU", {STRING_32} "Russian Federation"], ["RW", {STRING_32} "Rwanda"], ["BL", {STRING_32} "Saint Barthélemy"],
["SH", {STRING_32} "Saint Helena, Ascension and Tristan da Cunha"], ["SH", {STRING_32} "Saint Helena, Ascension and Tristan da Cunha"],
["KN", {STRING_32} "Saint Kitts and Nevis"], ["LC", {STRING_32} "Saint Lucia"], ["MF", {STRING_32} "Saint Martin (French part)"], ["KN", {STRING_32} "Saint Kitts and Nevis"], ["LC", {STRING_32} "Saint Lucia"], ["MF", {STRING_32} "Saint Martin (French part)"],
["PM", {STRING_32} "Saint Pierre and Miquelon"], ["PM", {STRING_32} "Saint Pierre and Miquelon"],
["VC", {STRING_32} "Saint Vincent and the Grenadines"], ["WS", {STRING_32} "Samoa"], ["VC", {STRING_32} "Saint Vincent and the Grenadines"], ["WS", {STRING_32} "Samoa"],
["SM", {STRING_32} "San Marino"], ["ST", {STRING_32} "Sao Tome and Principe"], ["SM", {STRING_32} "San Marino"], ["ST", {STRING_32} "Sao Tome and Principe"],
["SA", {STRING_32} "Saudi Arabia"], ["SN", {STRING_32} "Senegal"], ["RS", {STRING_32} "Serbia"], ["SA", {STRING_32} "Saudi Arabia"], ["SN", {STRING_32} "Senegal"], ["RS", {STRING_32} "Serbia"],
["SC", {STRING_32} "Seychelles"], ["SL", {STRING_32} "Sierra Leone"], ["SC", {STRING_32} "Seychelles"], ["SL", {STRING_32} "Sierra Leone"],
["SG", {STRING_32} "Singapore"], ["SX", {STRING_32} "Sint Maarten (Dutch part)"], ["SK", {STRING_32} "Slovakia"], ["SG", {STRING_32} "Singapore"], ["SX", {STRING_32} "Sint Maarten (Dutch part)"], ["SK", {STRING_32} "Slovakia"],
["SI", {STRING_32} "Slovenia"], ["SB", {STRING_32} "Solomon Islands"], ["SI", {STRING_32} "Slovenia"], ["SB", {STRING_32} "Solomon Islands"],
["SO", {STRING_32} "Somalia"], ["ZA", {STRING_32} "South Africa"], ["GS", {STRING_32} "South Georgia and the South Sandwich Islands"], ["SO", {STRING_32} "Somalia"], ["ZA", {STRING_32} "South Africa"], ["GS", {STRING_32} "South Georgia and the South Sandwich Islands"],
["SS", {STRING_32} "South Sudan"], ["SS", {STRING_32} "South Sudan"],
["ES", {STRING_32} "Spain"], ["LK", {STRING_32} "Sri Lanka"], ["SD", {STRING_32} "Sudan"], ["SR", {STRING_32} "Suriname"], ["ES", {STRING_32} "Spain"], ["LK", {STRING_32} "Sri Lanka"], ["SD", {STRING_32} "Sudan"], ["SR", {STRING_32} "Suriname"],
["SJ", {STRING_32} "Svalbard and Jan Mayen"], ["SJ", {STRING_32} "Svalbard and Jan Mayen"],
["SZ", {STRING_32} "Swaziland"], ["SE", {STRING_32} "Sweden"], ["CH", {STRING_32} "Switzerland"], ["SZ", {STRING_32} "Swaziland"], ["SE", {STRING_32} "Sweden"], ["CH", {STRING_32} "Switzerland"],
["SY", {STRING_32} "Syrian Arab Republic"], ["SY", {STRING_32} "Syrian Arab Republic"],
["TW", {STRING_32} "Taiwan, Province of China"], ["TJ", {STRING_32} "Tajikistan"], ["TW", {STRING_32} "Taiwan, Province of China"], ["TJ", {STRING_32} "Tajikistan"],
["TZ", {STRING_32} "Tanzania, United Republic of"], ["TH", {STRING_32} "Thailand"], ["TZ", {STRING_32} "Tanzania, United Republic of"], ["TH", {STRING_32} "Thailand"],
["TL", {STRING_32} "Timor-Leste"], ["TG", {STRING_32} "Togo"], ["TK", {STRING_32} "Tokelau"], ["TL", {STRING_32} "Timor-Leste"], ["TG", {STRING_32} "Togo"], ["TK", {STRING_32} "Tokelau"],
["TO", {STRING_32} "Tonga"], ["TT", {STRING_32} "Trinidad and Tobago"], ["TO", {STRING_32} "Tonga"], ["TT", {STRING_32} "Trinidad and Tobago"],
["TN", {STRING_32} "Tunisia"], ["TR", {STRING_32} "Turkey"], ["TM", {STRING_32} "Turkmenistan"], ["TN", {STRING_32} "Tunisia"], ["TR", {STRING_32} "Turkey"], ["TM", {STRING_32} "Turkmenistan"],
["TC", {STRING_32} "Turks and Caicos Islands"], ["TV", {STRING_32} "Tuvalu"], ["TC", {STRING_32} "Turks and Caicos Islands"], ["TV", {STRING_32} "Tuvalu"],
["UG", {STRING_32} "Uganda"], ["UA", {STRING_32} "Ukraine"], ["AE", {STRING_32} "United Arab Emirates"], ["UG", {STRING_32} "Uganda"], ["UA", {STRING_32} "Ukraine"], ["AE", {STRING_32} "United Arab Emirates"],
["GB", {STRING_32} "United Kingdom"], ["US", {STRING_32} "United States"], ["GB", {STRING_32} "United Kingdom"], ["US", {STRING_32} "United States"],
["UM", {STRING_32} "United States Minor Outlying Islands"], ["UY", {STRING_32} "Uruguay"], ["UM", {STRING_32} "United States Minor Outlying Islands"], ["UY", {STRING_32} "Uruguay"],
["UZ", {STRING_32} "Uzbekistan"], ["VU", {STRING_32} "Vanuatu"], ["UZ", {STRING_32} "Uzbekistan"], ["VU", {STRING_32} "Vanuatu"],
["VE", {STRING_32} "Venezuela, Bolivarian Republic of"], ["VN", {STRING_32} "Viet Nam"], ["VE", {STRING_32} "Venezuela, Bolivarian Republic of"], ["VN", {STRING_32} "Viet Nam"],
["VG", {STRING_32} "Virgin Islands, British"], ["VG", {STRING_32} "Virgin Islands, British"],
["VI", {STRING_32} "Virgin Islands, U.S."], ["WF", {STRING_32} "Wallis and Futuna"], ["VI", {STRING_32} "Virgin Islands, U.S."], ["WF", {STRING_32} "Wallis and Futuna"],
["EH", {STRING_32} "Western Sahara"], ["YE", {STRING_32} "Yemen"], ["EH", {STRING_32} "Western Sahara"], ["YE", {STRING_32} "Yemen"],
@@ -1,6 +1,5 @@
note note
description: "Summary description for {GOOGLE_AUTOCOMPLETION}." description: "Summary description for {GOOGLE_AUTOCOMPLETION}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -1,6 +1,5 @@
note note
description: "Summary description for {BASE_PAGE}." description: "Summary description for {BASE_PAGE}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -1,6 +1,5 @@
note note
description: "Summary description for {CODEVIEW_PAGE}." description: "Summary description for {CODEVIEW_PAGE}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -1,6 +1,5 @@
note note
description: "Summary description for {GOOGLE_NEWS}." description: "Summary description for {GOOGLE_NEWS}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -1,6 +1,5 @@
note note
description: "Summary description for {GOOGLE_NEWS_DATASOURCE}." description: "Summary description for {GOOGLE_NEWS_DATASOURCE}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -1,6 +1,5 @@
note note
description: "Summary description for {GOOGLE_NEWS_REPEATER}." description: "Summary description for {GOOGLE_NEWS_REPEATER}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -1,6 +1,5 @@
note note
description: "Summary description for {GRID_PAGE}." description: "Summary description for {GRID_PAGE}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -1,6 +1,5 @@
note note
description: "Summary description for {OWN_VALIDATOR}." description: "Summary description for {OWN_VALIDATOR}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -1,6 +1,5 @@
note note
description: "Summary description for {INCREASING_PROGRESSSOURCE}." description: "Summary description for {INCREASING_PROGRESSSOURCE}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -1,6 +1,5 @@
note note
description: "Summary description for {REPEATER_PAGE}." description: "Summary description for {REPEATER_PAGE}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -1,6 +1,5 @@
note note
description: "Summary description for {SAMPLE_PAGE}." description: "Summary description for {SAMPLE_PAGE}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -1,6 +1,5 @@
note note
description: "Summary description for {SLIDER_PAGE}." description: "Summary description for {SLIDER_PAGE}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -1,6 +1,5 @@
note note
description: "Summary description for {UPLOAD_PAGE}." description: "Summary description for {UPLOAD_PAGE}."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -31,6 +31,7 @@ feature {NONE} -- Initialization
end end
initialize_pool (p: like pool; n: INTEGER) initialize_pool (p: like pool; n: INTEGER)
-- Initialize Concurrent pool of `n' potential separate connection handlers.
do do
p.set_count (n) p.set_count (n)
end end
@@ -49,6 +50,7 @@ feature -- Access
feature {HTTPD_SERVER_I} -- Execution feature {HTTPD_SERVER_I} -- Execution
shutdown shutdown
-- <Precursor>
do do
if not is_shutdown_requested then if not is_shutdown_requested then
is_shutdown_requested := True is_shutdown_requested := True
@@ -57,11 +59,13 @@ feature {HTTPD_SERVER_I} -- Execution
end end
pool_gracefull_stop (p: like pool) pool_gracefull_stop (p: like pool)
-- Graceful stop concurrent pool of separate connection handlers.
do do
p.gracefull_stop p.gracefull_stop
end end
accept_incoming_connection (a_listening_socket: HTTPD_STREAM_SOCKET) accept_incoming_connection (a_listening_socket: HTTPD_STREAM_SOCKET)
-- <Precursor>
do do
accept_connection_on_pool (pool, a_listening_socket) -- Wait on not pool.is_full or is_stop_requested accept_connection_on_pool (pool, a_listening_socket) -- Wait on not pool.is_full or is_stop_requested
end end
@@ -92,7 +96,7 @@ feature {HTTPD_SERVER_I} -- Execution
end end
process_handler (hdl: separate HTTPD_REQUEST_HANDLER) process_handler (hdl: separate HTTPD_REQUEST_HANDLER)
-- Process request handler `hdl' concurrently. -- Process request handler `hdl' as soon as `hdl' is connected to accepted socket.
require require
hdl.is_connected hdl.is_connected
do do
@@ -118,7 +122,7 @@ feature {HTTPD_SERVER_I} -- Status report
feature {NONE} -- Implementation feature {NONE} -- Implementation
separate_client_socket (hdl: separate HTTPD_REQUEST_HANDLER): separate HTTPD_STREAM_SOCKET separate_client_socket (hdl: separate HTTPD_REQUEST_HANDLER): separate HTTPD_STREAM_SOCKET
-- Client socket for handler `hdl'. -- Client socket for request handler `hdl'.
do do
Result := hdl.client_socket Result := hdl.client_socket
end end
@@ -57,11 +57,13 @@ feature -- Access: SSL
-- Is SSL/TLS session?. -- Is SSL/TLS session?.
ca_crt: STRING ca_crt: STRING
-- the signed certificate.
ca_key: STRING ca_key: STRING
-- private key to the certificate.
ssl_protocol: NATURAL ssl_protocol: NATURAL
-- By default protocol is tls 1.2. -- By default protocol is tls 1.2.
feature -- Element change feature -- Element change
@@ -69,40 +71,58 @@ feature -- Element change
do do
if v = Void then if v = Void then
unset_http_server_name unset_http_server_name
-- http_server_name := Void
else else
create {IMMUTABLE_STRING_8} http_server_name.make_from_separate (v) create {IMMUTABLE_STRING_8} http_server_name.make_from_separate (v)
end end
--| Missing postcondition.
end end
unset_http_server_name unset_http_server_name
-- Unset `http_server_name' value.
do do
http_server_name := Void http_server_name := Void
ensure
unset_http_server_name: http_server_name = Void.
end end
set_http_server_port (v: like http_server_port) set_http_server_port (v: like http_server_port)
-- Set `http_server_port' with `v'.
do do
http_server_port := v http_server_port := v
ensure
http_server_port_set: http_server_port = v
end end
set_max_tcp_clients (v: like max_tcp_clients) set_max_tcp_clients (v: like max_tcp_clients)
-- Set `max_tcp_clients' with `v'.
do do
max_tcp_clients := v max_tcp_clients := v
ensure
max_tcp_clients_set: max_tcp_clients = v
end end
set_max_concurrent_connections (v: like max_concurrent_connections) set_max_concurrent_connections (v: like max_concurrent_connections)
-- Set `max_concurrent_connections' with `v'.
do do
max_concurrent_connections := v max_concurrent_connections := v
ensure
max_concurrent_connections_set : max_concurrent_connections = v
end end
set_socket_accept_timeout (v: like socket_accept_timeout) set_socket_accept_timeout (v: like socket_accept_timeout)
-- Set `socket_accept_timeout' with `v'
do do
socket_accept_timeout := v socket_accept_timeout := v
ensure
socket_accept_timeout_set: socket_accept_timeout = v
end end
set_socket_connect_timeout (v: like socket_connect_timeout) set_socket_connect_timeout (v: like socket_connect_timeout)
-- Set `socket_connect_timeout' with `v'
do do
socket_connect_timeout := v socket_connect_timeout := v
ensure
socket_connect_timeout_set: socket_connect_timeout = v
end end
set_force_single_threaded (v: like force_single_threaded) set_force_single_threaded (v: like force_single_threaded)
@@ -110,12 +130,17 @@ feature -- Element change
if v then if v then
set_max_concurrent_connections (0) set_max_concurrent_connections (0)
end end
--|Missing postcondition
--| force_single_thread_set: v implies max_concurrent_connections = 0
--| not_single_thread: not v implies max_concurrent_connections > 0
end end
set_is_verbose (b: BOOLEAN) set_is_verbose (b: BOOLEAN)
-- Set `is_verbose' to `b' -- Set `is_verbose' to `b'
do do
is_verbose := b is_verbose := b
ensure
is_verbose_set: is_verbose = b
end end
set_keep_alive_timeout (a_seconds: like keep_alive_timeout) set_keep_alive_timeout (a_seconds: like keep_alive_timeout)
@@ -137,6 +162,12 @@ feature -- Element change
else else
is_secure := False is_secure := False
end end
--| Missing postcondition
ensure
is_secure_set: has_ssl_support implies is_secure
-- http_server_port_set: has_ssl_support implies http_server_port = 443
is_not_secure: not has_ssl_support implies not is_secure
-- default_port: not has_ssl_support implies http_server_port = 80
end end
feature -- Element change feature -- Element change
@@ -170,31 +201,43 @@ feature -- SSL Helpers
set_ssl_protocol_to_ssl_2_or_3 set_ssl_protocol_to_ssl_2_or_3
-- Set `ssl_protocol' with `Ssl_23'. -- Set `ssl_protocol' with `Ssl_23'.
deferred deferred
ensure
ssl_protocol_set: ssl_protocol = {SSL_PROTOCOL}.Ssl_23
end end
set_ssl_protocol_to_ssl_3 set_ssl_protocol_to_ssl_3
-- Set `ssl_protocol' with `Ssl_3'. -- Set `ssl_protocol' with `Ssl_3'.
deferred deferred
ensure
ssl_protocol_set: ssl_protocol = {SSL_PROTOCOL}.Ssl_3
end end
set_ssl_protocol_to_tls_1_0 set_ssl_protocol_to_tls_1_0
-- Set `ssl_protocol' with `Tls_1_0'. -- Set `ssl_protocol' with `Tls_1_0'.
deferred deferred
ensure
ssl_protocol_set: ssl_protocol = {SSL_PROTOCOL}.Tls_1_0
end end
set_ssl_protocol_to_tls_1_1 set_ssl_protocol_to_tls_1_1
-- Set `ssl_protocol' with `Tls_1_1'. -- Set `ssl_protocol' with `Tls_1_1'.
deferred deferred
ensure
ssl_protocol_set: ssl_protocol = {SSL_PROTOCOL}.Tls_1_1
end end
set_ssl_protocol_to_tls_1_2 set_ssl_protocol_to_tls_1_2
-- Set `ssl_protocol' with `Tls_1_2'. -- Set `ssl_protocol' with `Tls_1_2'.
deferred deferred
ensure
ssl_protocol_set: ssl_protocol = {SSL_PROTOCOL}.Tls_1_2
end end
set_ssl_protocol_to_dtls_1_0 set_ssl_protocol_to_dtls_1_0
-- Set `ssl_protocol' with `Dtls_1_0'. -- Set `ssl_protocol' with `Dtls_1_0'.
deferred deferred
ensure
ssl_protocol_set: ssl_protocol = {SSL_PROTOCOL}.Dtls_1_0
end end
note note
@@ -79,6 +79,7 @@ feature {NONE} -- Implementation
end end
separate_server_log (a_server: like server; a_message: separate READABLE_STRING_8) separate_server_log (a_server: like server; a_message: separate READABLE_STRING_8)
-- Concurrent call to `a_server.log (a_message)'.
do do
a_server.log (a_message) a_server.log (a_message)
end end
@@ -1,6 +1,5 @@
note note
description: "Summary description for {HTTPD_REQUEST_HANDLER_I}." description: "HTTPD handler interface processing request."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -117,13 +116,17 @@ feature -- Status report
feature -- Change feature -- Change
set_is_verbose (b: BOOLEAN) set_is_verbose (b: BOOLEAN)
-- Set `is_verbose' with `b'.
do do
is_verbose := b is_verbose := b
ensure
is_verbose_set: is_verbose = b
end end
feature -- Execution feature -- Execution
safe_execute safe_execute
-- Execute accepted incoming connection as request.
local local
retried: BOOLEAN retried: BOOLEAN
do do
@@ -194,6 +197,8 @@ feature -- Execution
dbglog (generator + ".execute_request socket=" + l_socket.descriptor.out + " ENTER") dbglog (generator + ".execute_request socket=" + l_socket.descriptor.out + " ENTER")
end end
l_socket.set_timeout (5) -- 5 seconds! l_socket.set_timeout (5) -- 5 seconds!
--| TODO: add configuration options for socket timeout.
--| set by default 5 seconds.
l_ready_for_reading := l_socket.ready_for_reading l_ready_for_reading := l_socket.ready_for_reading
if l_ready_for_reading then if l_ready_for_reading then
create l_remote_info create l_remote_info
@@ -214,7 +219,6 @@ feature -- Execution
if has_error then if has_error then
-- check catch_bad_incoming_connection: False end -- check catch_bad_incoming_connection: False end
if is_verbose then if is_verbose then
-- check invalid_incoming_request: False end
log ("ERROR: invalid HTTP incoming request") log ("ERROR: invalid HTTP incoming request")
end end
else else
@@ -364,11 +368,15 @@ feature -- Output
logger: detachable HTTPD_LOGGER logger: detachable HTTPD_LOGGER
set_logger (a_logger: like logger) set_logger (a_logger: like logger)
-- Set `logger' with `a_logger'.
do do
logger := a_logger logger := a_logger
ensure
logger_set: logger = a_logger
end end
log (m: STRING) log (m: STRING)
-- Log message `m'.
do do
if attached logger as l_logger then if attached logger as l_logger then
l_logger.log (m) l_logger.log (m)
@@ -1,5 +1,5 @@
note note
description: "Summary description for {HTTPD_SERVER_I}." description: "HTTPD server interface"
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -14,10 +14,10 @@ inherit
feature {NONE} -- Initialization feature {NONE} -- Initialization
make (a_factory: like factory) make (a_factory: like factory)
-- `a_cfg': server configuration -- Create current httpd server with `a_factory' of connection handlers.
-- `a_factory': connection handler builder -- `a_factory': connection handler builder
require require
fac_is_separated: {PLATFORM}.is_scoop_capable implies not attached {HTTPD_REQUEST_HANDLER_FACTORY} a_factory a_factory_is_separated: {PLATFORM}.is_scoop_capable implies not attached {HTTPD_REQUEST_HANDLER_FACTORY} a_factory
do do
make_configured (create {like configuration}.make, a_factory) make_configured (create {like configuration}.make, a_factory)
end end
@@ -67,6 +67,7 @@ feature -- Callbacks
observer: detachable separate HTTPD_SERVER_OBSERVER observer: detachable separate HTTPD_SERVER_OBSERVER
set_observer (obs: like observer) set_observer (obs: like observer)
-- Set `observer' to `obs'.
do do
observer := obs observer := obs
end end
@@ -252,7 +253,6 @@ feature -- Event
require require
not_launched: not is_launched not_launched: not is_launched
do do
-- print ("port=" + a_port.out + "%N")
is_launched := True is_launched := True
port := a_port port := a_port
if attached observer as obs then if attached observer as obs then
@@ -320,12 +320,15 @@ feature -- Output
output: detachable FILE output: detachable FILE
set_log_output (f: FILE) set_log_output (f: FILE)
-- Set `output' to `f'.
do do
output := f output := f
ensure
output_set: output = f
end end
log (a_message: separate READABLE_STRING_8) log (a_message: separate READABLE_STRING_8)
-- Log `a_message' -- Log `a_message'.
local local
m: STRING m: STRING
do do
@@ -18,9 +18,12 @@ create
feature {NONE} -- Initialization feature {NONE} -- Initialization
make make
-- Create a new instance and set ssl protocol to tls_1_2.
do do
Precursor Precursor
ssl_protocol := {SSL_PROTOCOL}.tls_1_2 set_ssl_protocol_to_tls_1_2
ensure then
ssl_protocol_set: ssl_protocol = {SSL_PROTOCOL}.tls_1_2
end end
feature -- Access feature -- Access
@@ -1,6 +1,8 @@
note note
description: "Summary description for {WGI_HTTPD_REQUEST_HANDLER}." description: "[
author: "" WGI implementation of HTTPD_REQUEST_HANDLER, will process the incoming connection
and extract information on the request and the server
]"
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -34,8 +36,10 @@ feature {NONE} -- Initialization
feature -- Access feature -- Access
connector: detachable separate WGI_STANDALONE_CONNECTOR [G] connector: detachable separate WGI_STANDALONE_CONNECTOR [G]
-- httpd solution.
base: detachable IMMUTABLE_STRING_8 base: detachable IMMUTABLE_STRING_8
-- Root url base.
do do
if attached connector as conn then if attached connector as conn then
if attached connector_base (conn) as l_base then if attached connector_base (conn) as l_base then
@@ -47,6 +51,7 @@ feature -- Access
feature -- SCOOP helpers feature -- SCOOP helpers
connector_base (conn: separate WGI_STANDALONE_CONNECTOR [G]): detachable separate READABLE_STRING_8 connector_base (conn: separate WGI_STANDALONE_CONNECTOR [G]): detachable separate READABLE_STRING_8
-- Rool url based from a connector `conn'.
do do
Result := conn.base Result := conn.base
end end
@@ -1,6 +1,5 @@
note note
description: "Summary description for {WGI_HTTPD_REQUEST_HANDLER_FACTORY}." description: "Implementation of WGI request handler factory for WGI_STANDALOE_CONNECTOR."
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -13,10 +12,12 @@ inherit
feature -- Access feature -- Access
connector: detachable separate WGI_STANDALONE_CONNECTOR [G] connector: detachable separate WGI_STANDALONE_CONNECTOR [G]
-- httpd solution.
feature -- Element change feature -- Element change
set_connector (conn: like connector) set_connector (conn: like connector)
-- Set `connector' with `conn'.
do do
connector := conn connector := conn
end end
@@ -16,12 +16,16 @@ inherit
feature -- Access feature -- Access
started: BOOLEAN started: BOOLEAN
-- is the server started?
stopped: BOOLEAN stopped: BOOLEAN
-- is the server stoped?
terminated: BOOLEAN terminated: BOOLEAN
-- is the server terminated?
port: INTEGER port: INTEGER
-- Server listening on port.
feature -- Event feature -- Event
@@ -29,17 +33,24 @@ feature -- Event
do do
started := True started := True
port := a_port port := a_port
ensure then
started_set: started = True
port_set: port = a_port
end end
on_stopped on_stopped
do do
stopped := True stopped := True
ensure then
stopped_set: stopped = True
end end
on_terminated on_terminated
do do
port := 0 port := 0
terminated := True terminated := True
ensure then
terminated_set: terminated = True
end end
note note
@@ -10,8 +10,12 @@
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/> <library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="connector_standalone" location="standalone-safe.ecf" readonly="false"/> <library name="connector_standalone" location="standalone-safe.ecf" readonly="false"/>
<library name="ewsgi" location="..\..\ewsgi-safe.ecf" readonly="false"/> <library name="ewsgi" location="..\..\ewsgi-safe.ecf" readonly="false"/>
<library name="httpd_EDIT" location="src\httpd\httpd-safe.ecf" readonly="false"/> <library name="httpd_edit" location="src\httpd\httpd-safe.ecf" readonly="false">
<library name="net_ssl_EDIT" location="$ISE_LIBRARY\unstable\library\network\socket\netssl\net_ssl-safe.ecf" readonly="false"/> <option debug="true">
<debug name="dbglog" enabled="true"/>
</option>
</library>
<library name="net_ssl_edit" location="$ISE_LIBRARY\unstable\library\network\socket\netssl\net_ssl-safe.ecf" readonly="false"/>
<library name="wsf" location="..\..\..\wsf\wsf-safe.ecf" readonly="false"/> <library name="wsf" location="..\..\..\wsf\wsf-safe.ecf" readonly="false"/>
<cluster name="tests" location="tests\" recursive="true"/> <cluster name="tests" location="tests\" recursive="true"/>
</target> </target>
+5 -4
View File
@@ -1,6 +1,5 @@
note note
description: "Summary description for {WSF_EXECUTION}." description: "Request execution based on attributes `request' and `response'. "
author: ""
date: "$Date$" date: "$Date$"
revision: "$Revision$" revision: "$Revision$"
@@ -52,7 +51,7 @@ feature -- Access
feature -- Execution feature -- Execution
execute execute
-- Execute Current `request', -- Execute Current request,
-- getting data from `request' -- getting data from `request'
-- and response to client via `response'. -- and response to client via `response'.
deferred deferred
@@ -75,6 +74,7 @@ feature -- Status report
feature -- Helpers feature -- Helpers
put_character (c: CHARACTER_8) put_character (c: CHARACTER_8)
-- Send the character `c'.
require require
message_writable: message_writable message_writable: message_writable
do do
@@ -82,6 +82,7 @@ feature -- Helpers
end end
put_string (s: READABLE_STRING_8) put_string (s: READABLE_STRING_8)
-- Send the string `s'.
require require
message_writable: message_writable message_writable: message_writable
do do
@@ -89,13 +90,13 @@ feature -- Helpers
end end
put_error (err: READABLE_STRING_8) put_error (err: READABLE_STRING_8)
-- Report error message `err' on the error output of the associated connector.
require require
message_writable: message_writable message_writable: message_writable
do do
response.put_error (err) response.put_error (err)
end end
feature -- Cleaning feature -- Cleaning
clean clean