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 32:2c5fc105fc50, committed 2016-02-22
- Comitter:
- Christopher Haster
- Date:
- Mon Feb 22 19:07:36 2016 -0600
- Branch:
- api-changes
- Parent:
- 31:7f15b95f2a1d
- Child:
- 33:20bf72a57adb
- Commit message:
- Added open/close calls to all sockets
Changed in this revision
--- a/Socket.cpp Mon Feb 22 22:51:03 2016 +0000
+++ b/Socket.cpp Mon Feb 22 19:07:36 2016 -0600
@@ -22,42 +22,19 @@
, _proto(proto)
, _socket(0)
{
-
memset(_ip_address, 0, SOCK_IP_SIZE);
_port = 0;
}
Socket::~Socket()
{
- if (_socket) {
- _iface->destroySocket(_socket);
- }
-}
-
-SocketInterface *Socket::_get_socket()
-{
- if (!_socket) {
- _socket = _iface->createSocket(_proto);
-
- if (_ip_address[0]) {
- _socket->setIPAddress(_ip_address);
- }
-
- if (_port) {
- _socket->setPort(_port);
- }
- }
-
- return _socket;
+ if (_socket) close();
}
int32_t Socket::setURL(const char *url, uint16_t port)
{
- SocketInterface *s = _get_socket();
- if (!s) return -2;
-
int32_t err = _iface->getHostByName(url, _ip_address);
- if (err < 0) return err;
+ if (err) return err;
if (_socket) {
_socket->setIPAddress(_ip_address);
@@ -102,17 +79,54 @@
return _port;
}
+int32_t Socket::open()
+{
+ if (_socket) close();
+
+ _socket = _iface->createSocket(_proto);
+ if (!_socket) return -2;
+
+ if (_ip_address[0]) {
+ _socket->setIPAddress(_ip_address);
+ }
+
+ if (_port) {
+ _socket->setPort(_port);
+ }
+
+ int32_t err = _socket->open();
+
+ if (err) {
+ _iface->destroySocket(_socket);
+ }
+
+ return err;
+}
+
+int32_t Socket::close()
+{
+ if (!_socket) return 0;
+
+ int32_t err = _socket->close();
+
+ if (!err) {
+ _iface->destroySocket(_socket);
+ }
+
+ return err;
+}
+
int32_t Socket::send(const void *data, uint32_t len, uint32_t timeout_ms)
{
- SocketInterface *s = _get_socket();
- if (!s) return -2;
- return s->send(data, len, timeout_ms);
+ if (!_socket) return -2;
+
+ return _socket->send(data, len, timeout_ms);
}
int32_t Socket::recv(void *data, uint32_t len, uint32_t timeout_ms)
{
- SocketInterface *s = _get_socket();
- if (!s) return -2;
- return s->recv(data, len, timeout_ms);
+ if (!_socket) return -2;
+
+ return _socket->recv(data, len, timeout_ms);
}
--- a/Socket.h Mon Feb 22 22:51:03 2016 +0000
+++ b/Socket.h Mon Feb 22 19:07:36 2016 -0600
@@ -56,6 +56,16 @@
uint16_t getPort() const;
+ /** Open a connection to the underlying address
+ * @return 0 on success
+ */
+ int32_t open();
+
+ /** Close an open connection
+ * @return 0 on success
+ */
+ int32_t close();
+
/** Send data over the socket
* @param data Buffer of data to send
* @param len Size of data to send
@@ -77,8 +87,6 @@
Socket(NetworkInterface *iface, socket_protocol_t proto);
~Socket();
- SocketInterface *_get_socket();
-
private:
NetworkInterface *_iface;
socket_protocol_t _proto;
--- a/SocketInterface.h Mon Feb 22 22:51:03 2016 +0000
+++ b/SocketInterface.h Mon Feb 22 19:07:36 2016 -0600
@@ -47,13 +47,11 @@
virtual void setPort(uint16_t port);
/** Open a connection to the underlying address
- * Only used for TCP sockets
* @return 0 on success
*/
virtual int32_t open() = 0;
/** Close an open connection
- * Only used for TCP sockets
* @return 0 on success
*/
virtual int32_t close() = 0;
--- a/TCPSocket.cpp Mon Feb 22 22:51:03 2016 +0000
+++ b/TCPSocket.cpp Mon Feb 22 19:07:36 2016 -0600
@@ -21,17 +21,3 @@
{
}
-int32_t TCPSocket::open()
-{
- SocketInterface *s = _get_socket();
- if (!s) return -2;
- return s->close();
-}
-
-int32_t TCPSocket::close()
-{
- SocketInterface *s = _get_socket();
- if (!s) return -2;
- return s->close();
-}
-
--- a/TCPSocket.h Mon Feb 22 22:51:03 2016 +0000
+++ b/TCPSocket.h Mon Feb 22 19:07:36 2016 -0600
@@ -33,17 +33,6 @@
* @param port Optional port to connect to
*/
TCPSocket(NetworkInterface *iface);
-
-
- /** Open a connection to the underlying address
- * @return 0 on success
- */
- int32_t open();
-
- /** Close an open connection
- * @return 0 on success
- */
- int32_t close();
};
#endif
