Skip to content

Commit 6e52774

Browse files
committed
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)
1 parent e540346 commit 6e52774

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
note
2+
description: "Summary description for {TCP_STREAM_SOCKET}."
3+
date: "$Date: 2015-02-16 19:53:13 +0100 (lun., 16 févr. 2015) $"
4+
revision: "$Revision: 96642 $"
5+
6+
class
7+
TCP_STREAM_SOCKET
8+
9+
inherit
10+
NETWORK_STREAM_SOCKET
11+
redefine
12+
make
13+
end
14+
15+
create
16+
make_server_by_address_and_port,
17+
make_server_by_port
18+
19+
create {NETWORK_STREAM_SOCKET}
20+
make_from_descriptor_and_address
21+
22+
feature {NONE} -- Initialization
23+
24+
make
25+
-- Create a network stream socket.
26+
do
27+
Precursor
28+
set_reuse_address
29+
end
30+
31+
make_server_by_address_and_port (an_address: INET_ADDRESS; a_port: INTEGER)
32+
-- Create server socket on `an_address' and `a_port'.
33+
require
34+
valid_port: a_port >= 0
35+
do
36+
make
37+
create address.make_from_address_and_port (an_address, a_port)
38+
bind
39+
end
40+
41+
feature -- Basic operation
42+
43+
send_message (a_msg: STRING)
44+
local
45+
a_package : PACKET
46+
a_data : MANAGED_POINTER
47+
c_string : C_STRING
48+
do
49+
create c_string.make (a_msg)
50+
create a_data.make_from_pointer (c_string.item, a_msg.count + 1)
51+
create a_package.make_from_managed_pointer (a_data)
52+
send (a_package, 1)
53+
end
54+
55+
feature -- Output
56+
57+
put_readable_string_8 (s: READABLE_STRING_8)
58+
-- Write readable string `s' to socket.
59+
local
60+
ext: C_STRING
61+
do
62+
create ext.make (s)
63+
put_managed_pointer (ext.managed_data, 0, s.count)
64+
end
65+
66+
feature -- Status report
67+
68+
try_ready_for_reading: BOOLEAN
69+
-- Is data available for reading from the socket right now?
70+
require
71+
socket_exists: exists
72+
local
73+
retval: INTEGER
74+
do
75+
retval := c_select_poll_with_timeout (descriptor, True, 0)
76+
Result := (retval > 0)
77+
end
78+
79+
note
80+
copyright: "2011-2015, Javier Velilla and others"
81+
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
82+
end

0 commit comments

Comments
 (0)