From 6e527745078c942c1f77d9b757aa13821d45356e Mon Sep 17 00:00:00 2001 From: Jocelyn Fiat Date: Wed, 18 Feb 2015 10:14:08 +0100 Subject: [PATCH] Prepare nino ecf to be compilable with upcoming changes in EiffelNet / NETWORK_STREAM_SOCKET interface. As EiffelNet release is related to EiffelStudio release, the condition "compiler version <= 15.02) is used, which means that before for release 15.01 and previous EiffelStudio releases, the project uses a specific TCP_STREAM_SOCKET, and for upcoming releases, it will use another version of that class). (see rev#96640 from eiffelstudio subversion repository) --- .../library/before_15_01/tcp_stream_socket.e | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 contrib/library/network/server/nino/library/before_15_01/tcp_stream_socket.e diff --git a/contrib/library/network/server/nino/library/before_15_01/tcp_stream_socket.e b/contrib/library/network/server/nino/library/before_15_01/tcp_stream_socket.e new file mode 100644 index 00000000..992a3652 --- /dev/null +++ b/contrib/library/network/server/nino/library/before_15_01/tcp_stream_socket.e @@ -0,0 +1,82 @@ +note + description: "Summary description for {TCP_STREAM_SOCKET}." + date: "$Date: 2015-02-16 19:53:13 +0100 (lun., 16 févr. 2015) $" + revision: "$Revision: 96642 $" + +class + TCP_STREAM_SOCKET + +inherit + NETWORK_STREAM_SOCKET + redefine + make + end + +create + make_server_by_address_and_port, + make_server_by_port + +create {NETWORK_STREAM_SOCKET} + make_from_descriptor_and_address + +feature {NONE} -- Initialization + + make + -- Create a network stream socket. + do + Precursor + set_reuse_address + end + + make_server_by_address_and_port (an_address: INET_ADDRESS; a_port: INTEGER) + -- Create server socket on `an_address' and `a_port'. + require + valid_port: a_port >= 0 + do + make + create address.make_from_address_and_port (an_address, a_port) + bind + end + +feature -- Basic operation + + send_message (a_msg: STRING) + local + a_package : PACKET + a_data : MANAGED_POINTER + c_string : C_STRING + do + create c_string.make (a_msg) + create a_data.make_from_pointer (c_string.item, a_msg.count + 1) + create a_package.make_from_managed_pointer (a_data) + send (a_package, 1) + end + +feature -- Output + + put_readable_string_8 (s: READABLE_STRING_8) + -- Write readable string `s' to socket. + local + ext: C_STRING + do + create ext.make (s) + put_managed_pointer (ext.managed_data, 0, s.count) + end + +feature -- Status report + + try_ready_for_reading: BOOLEAN + -- Is data available for reading from the socket right now? + require + socket_exists: exists + local + retval: INTEGER + do + retval := c_select_poll_with_timeout (descriptor, True, 0) + Result := (retval > 0) + end + +note + copyright: "2011-2015, Javier Velilla and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" +end