Files
EWF/library/server/libfcgi/implementation/windows/fcgi_c_api.e
Jocelyn Fiat 8344607eb6 Implemented WSF_RESPONSE.put_error (...) and related
Added WSF_RESPONSE.put_character
Renamed  WGI_OUTPUT_STREAM.put_character_8 as put_character  to follow style of put_string  (and not put_string_8)
Refactored the WSF_DEFAULT_SERVICE_LAUNCHER
Added WSF_DEFAULT_SERVICE to be more user friendly
Splitted the wsf/default/ libraries to have wsf/connector/... and being able to handle more than one connector in the same application
2012-03-20 10:29:55 +01:00

161 lines
3.5 KiB
Plaintext

note
description: "Wrappers around FastCGI C API."
legal: "See notice at end of class."
status: "See notice at end of class."
date: "$Date$"
revision: "$Revision$"
class
FCGI_C_API
feature -- Connections
accept: INTEGER
-- Accept a Fast CGI connection.
-- Return 0 for successful calls, -1 otherwise.
external
"dll libfcgi.dll signature (): EIF_INTEGER use fcgi_stdio.h "
alias
"FCGI_Accept"
end
environ: POINTER
-- Get the (char**) environ variable from the DLL.
external
"dll libfcgi.dll signature (): EIF_POINTER use fcgi_stdio.h "
alias
"FCGI_Environ"
end
finish
-- Finished current request from HTTP server started from
-- the most recent call to `accept'.
external
"dll libfcgi.dll signature () use fcgi_stdio.h "
alias
"FCGI_Finish"
end
set_exit_status (v: INTEGER)
-- Set the exit status for the most recent request
external
"dll libfcgi.dll signature (EIF_INTEGER) use fcgi_stdio.h "
alias
"FCGI_SetExitStatus"
end
feature -- Input
read_content_into (a_buffer: POINTER; a_length: INTEGER): INTEGER
-- Read content stream into `a_buffer' but no more than `a_length' character.
local
i: INTEGER
l_stdin: POINTER
do
l_stdin := stdin
i := feof (l_stdin)
if i /= 0 then
Result := 0
else
Result := fread(a_buffer, 1, a_length, l_stdin)
end
end
feature {FCGI_IMP} -- Internal
feof (v: POINTER): INTEGER
-- FCGI_feof()
external
"dll libfcgi.dll signature (EIF_POINTER): EIF_INTEGER use fcgi_stdio.h "
alias
"FCGI_feof"
end
feature {NONE} -- Input
fread (v: POINTER; a_size: INTEGER; n: INTEGER; fp: POINTER): INTEGER
-- FCGI_fread() read from input `fp' and put into `v'
external
"dll libfcgi.dll signature (EIF_POINTER, EIF_INTEGER, EIF_INTEGER, EIF_POINTER): EIF_INTEGER use fcgi_stdio.h "
alias
"FCGI_fread"
end
gets (s: POINTER): POINTER
-- gets() reads a line from stdin into the buffer pointed to
-- by `s' until either a terminating newline or EOF, which it
-- replaces with '\0'
-- No check for buffer overrun is performed
external
"dll libfcgi.dll signature (EIF_POINTER): EIF_POINTER use fcgi_stdio.h "
alias
"FCGI_gets"
end
feature -- Output
put_string (v: POINTER; n: INTEGER)
local
i: INTEGER
do
i := fwrite (v, 1, n, stdout)
end
feature -- Error
put_error (v: POINTER; n: INTEGER)
local
i: INTEGER
do
i := fwrite (v, 1, n, stderr)
end
feature {NONE} -- Output
fwrite (v: POINTER; a_size: INTEGER; n: INTEGER; fp: POINTER): INTEGER
-- FCGI_fwrite() ouput `v' to `fp'
external
"dll libfcgi.dll signature (EIF_POINTER, EIF_INTEGER, EIF_INTEGER, EIF_POINTER): EIF_INTEGER use fcgi_stdio.h "
alias
"FCGI_fwrite"
end
feature -- Access
stdout: POINTER
-- FCGI_stdout() return pointer on output FCGI_FILE
external
"C inline use %"fcgi_stdio.h%""
alias
"FCGI_stdout"
end
stdin: POINTER
-- FCGI_stdin() return pointer on input FCGI_FILE
external
"C inline use %"fcgi_stdio.h%""
alias
"FCGI_stdin"
end
stderr: POINTER
-- FCGI_stderr() return pointer on error FCGI_FILE
external
"C inline use %"fcgi_stdio.h%""
alias
"FCGI_stderr"
end
note
copyright: "Copyright (c) 1984-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