diff options
author | dos-reis <gdr@axiomatics.org> | 2008-10-25 03:21:55 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2008-10-25 03:21:55 +0000 |
commit | a3dccc344e57259f113b7f2d7e2761ad8131e60b (patch) | |
tree | 6cd6ea55fdfa2470c08355321af49cd650ca5963 /src/lib | |
parent | ca39f5ae7631e3bedf6114f7ebe7dfa2a8579f76 (diff) | |
download | open-axiom-a3dccc344e57259f113b7f2d7e2761ad8131e60b.tar.gz |
* interp/sys-os.boot: Import oa_socket_read_byte as
readByteFromStreamSocket. Import oa_socket_write_byte as
writeByteToStreamSocket.
* include/sockio.h (oa_socket_read_byte): Declare.
(oa_socket_write_byte): Likewise.
* lib/sockio-c.c (oa_socket_read_byte): Define.
(oa_socket_write_byte): Likewise.
* algebra/net.spad.pamphlet (readByteIfCan!$InetClientStreamSocket):
Implement.
(writeByteIfCan!$InetClientStreamSocket): Likewise.
* etc/asq.c.pamphlet: Update build rules for asq$(EXEEXT).
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/sockio-c.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/lib/sockio-c.c b/src/lib/sockio-c.c index c53d3981..51c04bfe 100644 --- a/src/lib/sockio-c.c +++ b/src/lib/sockio-c.c @@ -366,18 +366,46 @@ oa_connect_ip_port_stream(const openaxiom_byte* addr, int prot, we restrict ourselves to the POSIX standard functions recv() and send(). */ + +/* Read some bytes of data into buffer `buf' with capacity `size'. + On failure, return -1; otherwise return the number of bytes + actually read. */ + OPENAXIOM_EXPORT int oa_socket_read(openaxiom_socket sock, openaxiom_byte* buf, int size) { return recv(sock, buf, size, 0); } +/* Attempt to read a byte from scoket `sock'. + On failure, return -1; otherwise the actual byte read. */ + +OPENAXIOM_EXPORT int +oa_socket_read_byte(openaxiom_socket sock) +{ + openaxiom_byte byte; + if(oa_socket_read(sock, &byte, 1) < 1) + return -1; + return byte; +} + + +/* Send `size' bytes of data contained in `buf' to the socket `sock'. + Return -1 on failured; the number of actualy write bytes on success. */ + OPENAXIOM_EXPORT int oa_socket_write(openaxiom_socket sock, const openaxiom_byte* buf, int size) { return send(sock, buf, size, 0); } +/* Send one byte to socket `sock'. */ +OPENAXIOM_EXPORT int +oa_socket_write_byte(openaxiom_socket sock, openaxiom_byte byte) +{ + return oa_socket_write(sock, &byte, 1) < 1 ? -1 : byte; +} + /* Return 1 is the last call was cancelled. */ |