    class
    	SOCKET

    General
    	cluster: abstract
    	description: "Generic sockets"
    	create: create_from_descriptor

    Ancestors
    	EXCEPTIONS
    	IO_MEDIUM*
    	SOCKET_RESOURCES

    Queries
    	address: SOCKET_ADDRESS
    	address_in_use: BOOLEAN
    	address_not_readable: BOOLEAN
    	already_bound: BOOLEAN
    	bad_socket_handle: BOOLEAN
    	bytes_read: INTEGER_32
    	c_msgdontroute: INTEGER_32
    	c_oobmsg: INTEGER_32
    	c_peekmsg: INTEGER_32
    	connect_in_progress: BOOLEAN
    	connection_refused: BOOLEAN
    	debug_enabled: BOOLEAN
    	descriptor: INTEGER_32
    	descriptor_available: BOOLEAN
    	dtable_full: BOOLEAN
    	error: STRING_8
    	error_number: INTEGER_32
    	exists: BOOLEAN
    	expired_socket: BOOLEAN
    	extendible: BOOLEAN
    	family: INTEGER_32
    	group_id: INTEGER_32
    	invalid_address: BOOLEAN
    	invalid_socket_handle: BOOLEAN
    	is_blocking: BOOLEAN
    	is_closed: BOOLEAN
    	is_executable: BOOLEAN
    	is_group_id: BOOLEAN
    	is_open_read: BOOLEAN
    	is_open_write: BOOLEAN
    	is_plain_text: BOOLEAN
    	is_process_id: BOOLEAN
    	is_readable: BOOLEAN
    	is_socket_stream: BOOLEAN
    	is_valid_peer_address (addr: SOCKET_ADDRESS): BOOLEAN
    	is_writable: BOOLEAN
    	last_boolean: BOOLEAN
    	last_character: CHARACTER_8
    	last_double: REAL_64
    	last_integer: INTEGER_32
    	last_integer_16: INTEGER_16
    	last_integer_32: INTEGER_32
    	last_integer_64: INTEGER_64
    	last_integer_8: INTEGER_8
    	last_natural: NATURAL_32
    	last_natural_16: NATURAL_16
    	last_natural_32: NATURAL_32
    	last_natural_64: NATURAL_64
    	last_natural_8: NATURAL_8
    	last_real: REAL_32
    	last_string: STRING_8
    	lastchar: CHARACTER_8
    	lastdouble: REAL_64
    	lastint: INTEGER_32
    	lastreal: REAL_32
    	laststring: STRING_8
    	name: STRING_8
    	network: BOOLEAN
    	no_buffers: BOOLEAN
    	no_permission: BOOLEAN
    	not_connected: BOOLEAN
    	peer_address: [like address] SOCKET_ADDRESS
    	process_id: INTEGER_32
    	protected_address: BOOLEAN
    	protocol: INTEGER_32
    	protocol_not_supported: BOOLEAN
    	read (size: INTEGER_32): PACKET
    	readable: BOOLEAN
    	receive (size, flags: INTEGER_32): PACKET
    	receive_buf_size: INTEGER_32
    	retrieved: ANY
    	route_enabled: BOOLEAN
    	send_buf_size: INTEGER_32
    	socket_family_not_supported: BOOLEAN
    	socket_in_use: BOOLEAN
    	socket_ok: BOOLEAN
    	socket_would_block: BOOLEAN
    	support_storable: BOOLEAN
    	type: INTEGER_32
    	zero_option: BOOLEAN

    Commands
    	basic_store (object: ANY)
    	bind
    	cleanup
    	close
    	close_socket
    	connect
    	create_from_descriptor (fd: INTEGER_32)
    	disable_debug
    	dispose
    	do_not_route
    	enable_debug
    	general_store (object: ANY)
    	independent_store (object: ANY)
    	make_socket
    	new_line
    	put_boolean (b: BOOLEAN)
    	put_character (c: CHARACTER_8)
    	put_double (d: REAL_64)
    	put_integer (i: INTEGER_32)
    	put_integer_16 (i: INTEGER_16)
    	put_integer_32 (i: INTEGER_32)
    	put_integer_64 (i: INTEGER_64)
    	put_integer_8 (i: INTEGER_8)
    	put_managed_pointer (p: MANAGED_POINTER; start_pos, nb_bytes: INTEGER_32)
    	put_natural (i: NATURAL_32)
    	put_natural_16 (i: NATURAL_16)
    	put_natural_32 (i: NATURAL_32)
    	put_natural_64 (i: NATURAL_64)
    	put_natural_8 (i: NATURAL_8)
    	put_new_line
    	put_real (r: REAL_32)
    	put_string (s: STRING_8)
    	putbool (b: BOOLEAN)
    	putchar (c: CHARACTER_8)
    	putdouble (d: REAL_64)
    	putint (i: INTEGER_32)
    	putreal (r: REAL_32)
    	putstring (s: STRING_8)
    	read_boolean
    	read_character
    	read_double
    	read_integer
    	read_integer_16
    	read_integer_32
    	read_integer_64
    	read_integer_8
    	read_line
    	read_natural
    	read_natural_16
    	read_natural_32
    	read_natural_64
    	read_natural_8
    	read_real
    	read_stream (nb_char: INTEGER_32)
    	read_to_managed_pointer (p: MANAGED_POINTER; start_pos, nb_bytes: INTEGER_32)
    	readbool
    	readchar
    	readdouble
    	readint
    	readline
    	readreal
    	readstream (nb_char: INTEGER_32)
    	route
    	send (a_packet: PACKET; flags: INTEGER_32)
    	set_address (addr: [like address] SOCKET_ADDRESS)
    	set_blocking
    	set_non_blocking
    	set_owner (own: INTEGER_32)
    	set_peer_address (addr: [like address] SOCKET_ADDRESS)
    	set_receive_buf_size (s: INTEGER_32)
    	set_send_buf_size (s: INTEGER_32)
    	write (a_packet: PACKET)