class FCGI_APPLICATION_COMMAND

(source code)

description

Base class for FCGI_SERVLET_SERVICE

note
	description: "Base class for ${FCGI_SERVLET_SERVICE}"

	author: "Finnian Reilly"
	copyright: "Copyright (c) 2001-2022 Finnian Reilly"
	contact: "finnian at eiffel hyphen loop dot com"

	license: "MIT license (See: en.wikipedia.org/wiki/MIT_License)"
	date: "2024-08-30 9:20:08 GMT (Friday 30th August 2024)"
	revision: "4"

deferred class
	FCGI_APPLICATION_COMMAND

inherit
	EL_APPLICATION_COMMAND

	EL_MODULE_DATE; EL_MODULE_DIRECTORY

	EL_MODULE_EXECUTION_ENVIRONMENT; EL_MODULE_EXCEPTION; EL_MODULE_FILE_SYSTEM

	EL_MODULE_LOG; EL_MODULE_LOG_MANAGER; EL_MODULE_UNIX_SIGNALS

	EL_STRING_8_CONSTANTS

	EL_SHARED_DOCUMENT_TYPES; 	EL_SHARED_HTTP_STATUS  EL_SHARED_OPERATING_ENVIRON

	EL_ENCODING_TYPE
		export
			{NONE} all
		end

feature {NONE} -- Event handling

	on_missing_servlet (resp: FCGI_SERVLET_RESPONSE)
			-- Send error page indicating missing servlet
		do
			resp.send_error (Http_status.not_found, "Resource not found", Text_type.html, Utf_8)
		end

	on_shutdown
		do
		end

feature {NONE} -- Implementation

	call (object: ANY)
		do
		end

	log_error (label, message: READABLE_STRING_GENERAL)
		do
			log_message ("ERROR", generator)
			log_message (label, message)
		end

	log_message (label, message: READABLE_STRING_GENERAL)
		do
			if not label.is_empty then
				lio.put_labeled_string (label, message)
				lio.put_new_line
			else
				lio.put_line (message)
			end
		end

	log_parameters (query_string: ZSTRING)
		local
			parameter: EL_NAME_VALUE_PAIR [ZSTRING]
		do
			lio.put_string (once "Parameters:")
			lio.tab_right
			lio.put_new_line
			create parameter.make_empty
			across query_string.split ('&') as list loop
				parameter.set_from_string (list.item, '=')
				lio.put_labeled_string (parameter.name, parameter.value)
				if list.is_last then
					lio.tab_left
				end
				lio.put_new_line
			end
		end

	log_separator
		-- log new-line or something after each request
		do
			do_nothing
		end

feature {NONE} -- String constants

	frozen Default_servlet_key: ZSTRING
		once
			Result := "<DEFAULT>"
		end

	frozen Fcgi_web_server_addrs: STRING = "FCGI_WEB_SERVER_ADDRS"

	Service_info_template: ZSTRING
		once
			Result := "[
				"#" with servlet #
			]"
		end

	Servlet_app_log_category: STRING = "servlet.app"

	Time_format: STRING = "[0]hh:[0]mi:[0]ss"

	Date_format: STRING
		once
			if attached date as d then
				Result := d.new_format (<< d.Var.long_month_name, d.Var.canonical_numeric_day >>)
			end
		end

feature {NONE} -- Constants

	Max_initialization_retry_count: INTEGER
		-- The maximum number of times application will retry
		once
			Result := 3
		end

end