mbed socket API
Dependents: EthernetInterface EthernetInterface_RSF EthernetInterface EthernetInterface ... more
Deprecated
This is an mbed 2 sockets library. For mbed 5, network sockets have been revised to better support additional network stacks and thread safety here.
Diff: TCPSocketConnection.cpp
- Revision:
- 10:d24738f4ef99
- Parent:
- 6:cd2e5559786d
- Child:
- 11:3d83c348fb8b
--- a/TCPSocketConnection.cpp Fri Jul 27 15:56:20 2012 +0000
+++ b/TCPSocketConnection.cpp Tue Jul 31 11:50:55 2012 +0000
@@ -40,13 +40,15 @@
return 0;
}
-int TCPSocketConnection::send(char* data, int length, int timeout_ms) {
+int TCPSocketConnection::send(char* data, int length) {
if ((_sock_fd < 0) || _closedByRemoteHost)
return -1;
- TimeInterval timeout(timeout_ms);
- if (wait_writable(timeout) != 0)
- return -1;
+ if (!_blocking) {
+ TimeInterval timeout(_timeout);
+ if (wait_writable(timeout) != 0)
+ return -1;
+ }
int n = lwip_send(_sock_fd, data, length, 0);
_closedByRemoteHost = (n == 0);
@@ -55,16 +57,19 @@
}
// -1 if unsuccessful, else number of bytes written
-int TCPSocketConnection::send_all(char* data, int length, int timeout_ms) {
+int TCPSocketConnection::send_all(char* data, int length) {
if ((_sock_fd < 0) || _closedByRemoteHost)
return -1;
size_t writtenLen = 0;
- TimeInterval timeout(timeout_ms);
+
+ TimeInterval timeout(_timeout);
while (writtenLen < length) {
- // Wait for socket to be writeable
- if (wait_writable(timeout) != 0)
- return writtenLen; //Timeout -- FIXME should we return -1 or writtenLength ?
+ if (!_blocking) {
+ // Wait for socket to be writeable
+ if (wait_writable(timeout) != 0)
+ return writtenLen; //Timeout -- FIXME should we return -1 or writtenLength ?
+ }
int ret = lwip_send(_sock_fd, data + writtenLen, length - writtenLen, 0);
if (ret > 0) {
@@ -81,13 +86,15 @@
return writtenLen;
}
-int TCPSocketConnection::receive(char* data, int length, int timeout_ms) {
+int TCPSocketConnection::receive(char* data, int length) {
if ((_sock_fd < 0) || _closedByRemoteHost)
return -1;
- TimeInterval timeout(timeout_ms);
- if (wait_readable(timeout) != 0)
- return -1;
+ if (!_blocking) {
+ TimeInterval timeout(_timeout);
+ if (wait_readable(timeout) != 0)
+ return -1;
+ }
int n = lwip_recv(_sock_fd, data, length, 0);
_closedByRemoteHost = (n == 0);
@@ -96,16 +103,18 @@
}
// -1 if unsuccessful, else number of bytes received
-int TCPSocketConnection::receive_all(char* data, int length, int timeout_ms) {
+int TCPSocketConnection::receive_all(char* data, int length) {
if ((_sock_fd < 0) || _closedByRemoteHost)
return -1;
size_t readLen = 0;
- TimeInterval timeout(timeout_ms);
+ TimeInterval timeout(_timeout);
while (readLen < length) {
- //Wait for socket to be readable
- if (wait_readable(timeout) != 0)
- return readLen; //Timeout -- FIXME should we return -1 or writtenLength ?
+ if (!_blocking) {
+ //Wait for socket to be readable
+ if (wait_readable(timeout) != 0)
+ return readLen; //Timeout -- FIXME should we return -1 or writtenLength ?
+ }
int ret = lwip_recv(_sock_fd, data + readLen, length - readLen, 0);
if (ret > 0) {
mbed official


