deferred class HTTP_CONNECTION
Summary
Handle one connection to the HTTP_SERVER. The real HTTP protocol is defined here.
Direct parents
Inherit list: CONNECTION
Insert list: DISPOSABLE, RECYCLABLE
Class invariant
Overview
Features
Loop Implementation
{LOOP_ITEM}
Implementation
{}
HTTP Server implementation
{HTTP_SERVER}
Server implementation
{SERVER}
Implementation
{}
The HTTP protocol (see RFC 2616)
{}
Recycler Implementation
{RECYCLING_POOL}
Collection Implementation
{}
Loop implementation
{LOOP_ITEM}
Implementation
{}
{JOB, LOOP_ITEM}
{LOOP_ITEM}
Maximum:
{}
Minimum:
{}
Bits:
{}
prepare (a_events: EVENTS_SET)
effective procedure
Premare the request to be processed by a_events and method_handler.
require
  • a_events /= Void
  • not a_events.queryable
  • not done
is_ready (a_events: EVENTS_SET): BOOLEAN
effective function
True when the management of the request in a_events can be use
require
  • a_events /= Void
  • a_events.queryable
  • not done
done: BOOLEAN
effective function
True when the request management has been completed.
continue
effective procedure
Manage the next step of the request.
require
  • not done
continue_read
effective procedure
Read and manage the last character of the request
continue_prepare
effective procedure
Manage the answer preparation
continue_write
effective procedure
Manage writing the answer
answer_state: INTEGER_32
writable attribute
{}
The state of a single answer
answer_state_read: INTEGER_32
is 0
constant attribute
{}
The state of the answer is in the read state
answer_state_prepare: INTEGER_32
is 1
constant attribute
{}
The state of the answer is in the read state
answer_state_write: INTEGER_32
is 2
constant attribute
{}
The state of the answer is in the write state
read_buffer: STRING
writable attribute
{}
The buffer that has been read
content_length: INTEGER_32
writable attribute
{}
The length of the body content of the request
content_count: INTEGER_32
writable attribute
{}
The number of bytes that has already been read.
set_server (a_server: HTTP_SERVER)
effective procedure
Assing server with the value of a_server
effective procedure
Assing ios with the value of a_io
require
  • a_io.is_connected
ensure
  • ios = a_io
server: HTTP_SERVER
writable attribute
{}
The server used to manage http connections
handle_disconnect (a_io: SOCKET_INPUT_OUTPUT_STREAM)
effective procedure
{}
Disconnect a_io
require
get_method_handler (a_method: STRING, a_uri: STRING, a_version: STRING): HTTP_METHOD_HANDLER
deferred function
{}
Retreive the method handeler of used to manage a request of type a_method addressed with a_uri using http a_version
require
  • a_method.as_upper.is_equal(a_method)
ensure
  • Result.method.is_equal(a_method) or else Result
disconnected: BOOLEAN
writable attribute
{}
Current is disconnected.
state: INTEGER_32
writable attribute
{}
The present connection state.
state_request_line: INTEGER_32
is 0
constant attribute
{}
The present state is in the manage request line connection state.
state_header: INTEGER_32
is 1
constant attribute
{}
The present state is in the manage header connection state.
state_body: INTEGER_32
is 2
constant attribute
{}
The present state is in the manage body connection state.
method_handler: HTTP_METHOD_HANDLER
writable attribute
{}
The handler used to manage the requests.
request_line: STRING
writable attribute
{}
A single line of the request.
call_state
effective procedure
{}
Manage read_buffer depending the present state
a_request_line (a_line: STRING)
effective procedure
{}
Manage the resquest a_line
a_header (a_line: STRING)
effective procedure
{}
Manage the header a_line and add it to the method_handler headers.
header_key: STRING
writable attribute
{}
An header key generated by parse_value
header_value: STRING
writable attribute
{}
An header value generated by parse_value
parse_header (a_line: STRING)
effective procedure
{}
Split the header a_line as key/value.
a_body (a_line: STRING)
effective procedure
{}
Add the a_line in the method_handler
recycle
effective procedure
At collection, recycle ios
dispose
effective procedure
{}
At collection, disconnect ios
restart
effective procedure
Restart the connection.
Require by Job. Should not be used.
require
  • done
ensure
  • not done
writable attribute
{}
Used to read (request) and write (answer)
priority: INTEGER_32
writable attribute
never change a job's priority after inserting it in loop_item.
Priority should only be set at creation time.
infix "<" (other: JOB): BOOLEAN
effective function
Maximum_character_code: INTEGER_16
{}
Largest supported code for CHARACTER values.
ensure
  • meaningful: Result >= 127
Maximum_integer_8: INTEGER_8
is 127
constant attribute
{}
Largest supported value of type INTEGER_8.
Maximum_integer_16: INTEGER_16
is 32767
constant attribute
{}
Largest supported value of type INTEGER_16.
Maximum_integer: INTEGER_32
is 2147483647
constant attribute
{}
Largest supported value of type INTEGER/INTEGER_32.
Maximum_integer_32: INTEGER_32
is 2147483647
constant attribute
{}
Largest supported value of type INTEGER/INTEGER_32.
Maximum_integer_64: INTEGER_64
is 9223372036854775807
constant attribute
{}
Largest supported value of type INTEGER_64.
Maximum_real_32: REAL_32
is {REAL_32 3.4028234663852885981170418348451692544e+38}
constant attribute
{}
Largest non-special (no NaNs nor infinity) supported value of type REAL_32.
Maximum_real: REAL_64
{}
Largest non-special (no NaNs nor infinity) supported value of type REAL.
Just to give an idea of this value: 1.79769313486231570....e+308
Maximum_real_64: REAL_64
{}
Largest non-special (no NaNs nor infinity) supported value of type REAL.
Just to give an idea of this value: 1.79769313486231570....e+308
Maximum_real_80: REAL_EXTENDED
{}
Largest supported value of type REAL_80.
ensure
Minimum_character_code: INTEGER_16
{}
Smallest supported code for CHARACTER values.
ensure
  • meaningful: Result <= 0
Minimum_integer_8: INTEGER_8
is -128
constant attribute
{}
Smallest supported value of type INTEGER_8.
Minimum_integer_16: INTEGER_16
is -32768
constant attribute
{}
Smallest supported value of type INTEGER_16.
Minimum_integer: INTEGER_32
is -2147483648
constant attribute
{}
Smallest supported value of type INTEGER/INTEGER_32.
Minimum_integer_32: INTEGER_32
is -2147483648
constant attribute
{}
Smallest supported value of type INTEGER/INTEGER_32.
Minimum_integer_64: INTEGER_64
is -9223372036854775808
constant attribute
{}
Smallest supported value of type INTEGER_64.
Minimum_real_32: REAL_32
is {REAL_32 -3.40282346638528859811704183484516925440e+38}
constant attribute
{}
Smallest non-special (no NaNs nor infinity) supported value of type REAL_32.
Minimum_real: REAL_64
{}
Smallest non-special (no NaNs nor infinity) supported value of type REAL.
Just to give an idea of this value: -1.79769313486231570....e+308
Minimum_real_64: REAL_64
{}
Smallest non-special (no NaNs nor infinity) supported value of type REAL.
Just to give an idea of this value: -1.79769313486231570....e+308
Minimum_real_80: REAL_64
{}
Smallest supported value of type REAL_80.
ensure
  • meaningful: Result <= 0.0
Boolean_bits: INTEGER_32
{}
Number of bits in a value of type BOOLEAN.
ensure
  • meaningful: Result >= 1
Character_bits: INTEGER_32
{}
Number of bits in a value of type CHARACTER.
ensure
Integer_bits: INTEGER_32
{}
Number of bits in a value of type INTEGER.
ensure
  • integer_definition: Result = 32
Real_bits: INTEGER_32
is 64
constant attribute
{}
Number of bits in a value of type REAL.
Pointer_bits: INTEGER_32
{}
Number of bits in a value of type POINTER.