Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: HelloWizFi250Interface
Fork of NetworkSocketAPI by
Revision 48:b3bbe28a7963, committed 2016-02-25
- Comitter:
- Christopher Haster
- Date:
- Thu Feb 25 03:13:26 2016 -0600
- Branch:
- api-changes
- Parent:
- 47:13929d610ed8
- Child:
- 49:85fe0b99948d
- Commit message:
- Added non-blocking recv
Changed in this revision
--- a/Socket.cpp Thu Feb 25 21:58:46 2016 +0000
+++ b/Socket.cpp Thu Feb 25 03:13:26 2016 -0600
@@ -141,19 +141,26 @@
return err;
}
-int32_t Socket::send(const void *data, uint32_t len)
+int32_t Socket::send(const void *data, uint32_t size)
{
if (!_socket) {
return NS_ERROR_NO_CONNECTION;
}
- return _socket->send(data, len);
+ return _socket->send(data, size);
}
-int32_t Socket::recv(void *data, uint32_t len)
+int32_t Socket::recv(void *data, uint32_t size, bool blocking)
{
if (!_socket) {
return NS_ERROR_NO_CONNECTION;
}
- return _socket->recv(data, len);
+
+ while (true) {
+ int32_t size = _socket->recv(data, size);
+
+ if (size != 0 || !blocking) {
+ return size;
+ }
+ }
}
--- a/Socket.h Thu Feb 25 21:58:46 2016 +0000
+++ b/Socket.h Thu Feb 25 03:13:26 2016 -0600
@@ -73,17 +73,18 @@
/** Send data over the socket
* @param data Buffer of data to send
- * @param len Size of data to send
+ * @param size Size of data to send
* @return 0 on success
*/
- int32_t send(const void *data, uint32_t len);
+ int32_t send(const void *data, uint32_t size);
/** Recieve data over the socket
* @param data Buffer to store recieved data
- * @param len Size of provided buffer
- * @return Number of bytes sent or a negative value on failure
+ * @param size Size of provided buffer
+ * @param blocking If true wait for data, otherwise return 0 if no data is available
+ * @return Number of bytes recieved or a negative value on failure
*/
- int32_t recv(void *data, uint32_t len);
+ int32_t recv(void *data, uint32_t size, bool blocking = true);
protected:
--- a/SocketInterface.h Thu Feb 25 21:58:46 2016 +0000
+++ b/SocketInterface.h Thu Feb 25 03:13:26 2016 -0600
@@ -46,11 +46,6 @@
*/
virtual void setPort(uint16_t port) { (void)port; }
- /** Set a timeout on network operations
- * @param timeout Maximum time in milliseconds for socket operations
- */
- virtual void setTimeout(uint32_t timeout) { (void)timeout; }
-
/** Status of the socket
* @return True if connected
*/
@@ -74,17 +69,21 @@
/** Send data
* @param data Buffer of data to send
- * @param len Size of data to send
+ * @param size Size of data to send
* @return 0 on success
*/
- virtual int32_t send(const void *data, uint32_t len) = 0;
+ virtual int32_t send(const void *data, uint32_t size) = 0;
- /** In client or server mode receive data
- * @param data a buffer to store the data in
- * @param amount The amount of data to receive
- * @return Number of bytes sent or a negative value on failure
+ /** Receive data
+ * @note
+ * This call should return immediately with a value of 0
+ * if no data is available.
+ *
+ * @param data A buffer to store the data in
+ * @param size Size of buffer
+ * @return Number of bytes received or a negative value on failure
*/
- virtual int32_t recv(void *data, uint32_t len) = 0;
+ virtual int32_t recv(void *data, uint32_t size) = 0;
};
#endif
