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)
This commit is contained in:
@@ -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
|
||||||
Reference in New Issue
Block a user