Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
LSH
lsh
Commits
cab953fd
Commit
cab953fd
authored
Oct 27, 1998
by
Niels Möller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
io_fd:s can now be read-only or write-only.
Rev: src/io.c:1.16
parent
bd18d360
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
70 additions
and
9 deletions
+70
-9
src/io.c
src/io.c
+70
-9
No files found.
src/io.c
View file @
cab953fd
...
...
@@ -151,10 +151,12 @@ static int io_iter(struct io_backend *b)
{
fds
[
i
].
fd
=
fd
->
fd
;
fds
[
i
].
events
=
0
;
if
(
!
fd
->
on_hold
)
if
(
fd
->
read_callback
&&
!
fd
->
on_hold
)
fds
[
i
].
events
|=
POLLIN
;
/* pre_write returns 0 if the buffer is empty */
if
(
fd
->
buffer
)
{
if
(
write_buffer_pre_write
(
fd
->
buffer
))
fds
[
i
].
events
|=
POLLOUT
;
else
...
...
@@ -164,6 +166,7 @@ static int io_iter(struct io_backend *b)
fd
->
close_now
=
1
;
}
}
}
END_FOR_FDS
;
FOR_FDS
(
struct
listen_fd
,
fd
,
b
->
listen
,
i
++
)
...
...
@@ -618,3 +621,61 @@ struct abstract_write *io_read_write(struct io_backend *b,
return
&
buffer
->
super
;
}
struct
io_fd
*
io_read
(
struct
io_backend
*
b
,
int
fd
,
struct
read_handler
*
read_callback
,
struct
close_callback
*
close_callback
)
{
struct
io_fd
*
f
;
NEW
(
f
);
f
->
fd
=
fd
;
f
->
close_reason
=
-
1
;
/* Invalid reason */
f
->
close_now
=
0
;
/* Reading */
f
->
handler
=
read_callback
;
f
->
on_hold
=
0
;
/* Writing */
f
->
buffer
=
NULL
;
f
->
close_callback
=
close_callback
;
f
->
next
=
b
->
io
;
b
->
io
=
f
;
b
->
nio
++
;
return
f
;
}
struct
io_fd
*
io_write
(
struct
io_backend
*
b
,
int
fd
,
UINT32
block_size
,
struct
close_callback
*
close_callback
)
{
struct
io_fd
*
f
;
struct
write_buffer
*
buffer
=
write_buffer_alloc
(
block_size
);
NEW
(
f
);
f
->
fd
=
fd
;
f
->
close_reason
=
-
1
;
/* Invalid reason */
f
->
close_now
=
0
;
/* Reading */
f
->
handler
=
NULL
;
/* Writing */
f
->
buffer
=
buffer
;
f
->
close_callback
=
close_callback
;
f
->
next
=
b
->
io
;
b
->
io
=
f
;
b
->
nio
++
;
return
&
buffer
->
super
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment