C++11-ify virtualisation in lwIP classes

Use `override` and `final` where appropriate, and eliminate unnecessary
`virtual`.

Some other C++11 simplifications.
pull/12489/head
Kevin Bracey 2020-02-21 13:49:26 +02:00
parent b4c1f7f3da
commit aa9058a293
2 changed files with 61 additions and 62 deletions

View File

@ -19,7 +19,7 @@
#include "EMACMemoryManager.h"
class LWIPMemoryManager : public EMACMemoryManager {
class LWIPMemoryManager final : public EMACMemoryManager {
public:
/**
@ -31,7 +31,7 @@ public:
* @param align Memory alignment requirement in bytes
* @return Allocated memory buffer, or NULL in case of error
*/
virtual net_stack_mem_buf_t *alloc_heap(uint32_t size, uint32_t align);
net_stack_mem_buf_t *alloc_heap(uint32_t size, uint32_t align) override;
/**
* Allocates memory buffer chain from a pool
@ -44,7 +44,7 @@ public:
* @param align Memory alignment requirement for each buffer in bytes
* @return Allocated memory buffer chain, or NULL in case of error
*/
virtual net_stack_mem_buf_t *alloc_pool(uint32_t size, uint32_t align);
net_stack_mem_buf_t *alloc_pool(uint32_t size, uint32_t align) override;
/**
* Get memory buffer pool allocation unit
@ -54,7 +54,7 @@ public:
* @param align Memory alignment requirement in bytes
* @return Contiguous memory size
*/
virtual uint32_t get_pool_alloc_unit(uint32_t align) const;
uint32_t get_pool_alloc_unit(uint32_t align) const override;
/**
* Free memory buffer chain
@ -64,7 +64,7 @@ public:
*
* @param buf Memory buffer chain to be freed.
*/
virtual void free(net_stack_mem_buf_t *buf);
void free(net_stack_mem_buf_t *buf) override;
/**
* Return total length of a memory buffer chain
@ -74,7 +74,7 @@ public:
* @param buf Memory buffer chain
* @return Total length in bytes
*/
virtual uint32_t get_total_len(const net_stack_mem_buf_t *buf) const;
uint32_t get_total_len(const net_stack_mem_buf_t *buf) const override;
/**
* Copy a memory buffer chain
@ -85,7 +85,7 @@ public:
* @param to_buf Memory buffer chain to copy to
* @param from_buf Memory buffer chain to copy from
*/
virtual void copy(net_stack_mem_buf_t *to_buf, const net_stack_mem_buf_t *from_buf);
void copy(net_stack_mem_buf_t *to_buf, const net_stack_mem_buf_t *from_buf) override;
/**
* Copy to a memory buffer chain
@ -98,7 +98,7 @@ public:
* @param ptr Pointer to data
* @param len Data length
*/
virtual void copy_to_buf(net_stack_mem_buf_t *to_buf, const void *ptr, uint32_t len);
void copy_to_buf(net_stack_mem_buf_t *to_buf, const void *ptr, uint32_t len) override;
/**
* Copy from a memory buffer chain
@ -110,7 +110,7 @@ public:
* @param from_buf Memory buffer chain to copy from
* @return Length of the data that was copied
*/
virtual uint32_t copy_from_buf(void *ptr, uint32_t len, const net_stack_mem_buf_t *from_buf) const;
uint32_t copy_from_buf(void *ptr, uint32_t len, const net_stack_mem_buf_t *from_buf) const override;
/**
* Concatenate two memory buffer chains
@ -122,7 +122,7 @@ public:
* @param to_buf Memory buffer chain to concatenate to
* @param cat_buf Memory buffer chain to concatenate
*/
virtual void cat(net_stack_mem_buf_t *to_buf, net_stack_mem_buf_t *cat_buf);
void cat(net_stack_mem_buf_t *to_buf, net_stack_mem_buf_t *cat_buf) override;
/**
* Returns the next buffer
@ -132,7 +132,7 @@ public:
* @param buf Memory buffer
* @return The next memory buffer, or NULL if last
*/
virtual net_stack_mem_buf_t *get_next(const net_stack_mem_buf_t *buf) const;
net_stack_mem_buf_t *get_next(const net_stack_mem_buf_t *buf) const override;
/**
* Return pointer to the payload of the buffer
@ -140,7 +140,7 @@ public:
* @param buf Memory buffer
* @return Pointer to the payload
*/
virtual void *get_ptr(const net_stack_mem_buf_t *buf) const;
void *get_ptr(const net_stack_mem_buf_t *buf) const override;
/**
* Return payload size of the buffer
@ -148,7 +148,7 @@ public:
* @param buf Memory buffer
* @return Size in bytes
*/
virtual uint32_t get_len(const net_stack_mem_buf_t *buf) const;
uint32_t get_len(const net_stack_mem_buf_t *buf) const override;
/**
* Sets the payload size of the buffer
@ -159,7 +159,7 @@ public:
* @param buf Memory buffer
* @param len Payload size, must be less or equal allocated size
*/
virtual void set_len(net_stack_mem_buf_t *buf, uint32_t len);
void set_len(net_stack_mem_buf_t *buf, uint32_t len) override;
private:

View File

@ -36,7 +36,7 @@ public:
using NetworkStack::get_ip_address;
static LWIP &get_instance();
class Interface : public OnboardNetworkStack::Interface {
class Interface final : public OnboardNetworkStack::Interface {
public:
/** Connect the interface to the network
*
@ -51,11 +51,11 @@ public:
* @param blocking Specify whether bringup blocks for connection completion.
* @return NSAPI_ERROR_OK on success, or error code
*/
virtual nsapi_error_t bringup(bool dhcp, const char *ip,
const char *netmask, const char *gw,
nsapi_ip_stack_t stack = DEFAULT_STACK,
bool blocking = true
);
nsapi_error_t bringup(bool dhcp, const char *ip,
const char *netmask, const char *gw,
nsapi_ip_stack_t stack = DEFAULT_STACK,
bool blocking = true
) override;
/** Disconnect interface from the network
*
@ -63,7 +63,7 @@ public:
*
* @return NSAPI_ERROR_OK on success, or error code
*/
virtual nsapi_error_t bringdown();
nsapi_error_t bringdown() override;
/** Register callback for status reporting
*
@ -73,35 +73,35 @@ public:
*
* @param status_cb The callback for status changes
*/
virtual void attach(mbed::Callback<void(nsapi_event_t, intptr_t)> status_cb);
void attach(mbed::Callback<void(nsapi_event_t, intptr_t)> status_cb) override;
/** Get the connection status
*
* @return The connection status according to ConnectionStatusType
*/
virtual nsapi_connection_status_t get_connection_status() const;
nsapi_connection_status_t get_connection_status() const override;
/** Return netif interface name
*
* @return netif name eg "en0"
*/
virtual char *get_interface_name(char *buf);
char *get_interface_name(char *buf) override;
/** Return MAC address of the network interface
*
* @return MAC address as "V:W:X:Y:Z"
*/
virtual char *get_mac_address(char *buf, nsapi_size_t buflen);
char *get_mac_address(char *buf, nsapi_size_t buflen) override;
/** @copydoc OnboardNetworkStack::Interface::get_ip_address */
virtual nsapi_error_t get_ip_address(SocketAddress *address);
nsapi_error_t get_ip_address(SocketAddress *address) override;
/** Get the IPv6 link local address in SocketAddress representation
*
* @address SocketAddress representation of the link local IPv6 address
* @return NSAPI_ERROR_OK on success, or error code
*/
virtual nsapi_error_t get_ipv6_link_local_address(SocketAddress *address);
nsapi_error_t get_ipv6_link_local_address(SocketAddress *address) override;
/** Copies netmask of the network interface to user supplied buffer
*
@ -109,7 +109,7 @@ public:
* @param buflen size of supplied buffer
* @return Pointer to a buffer, or NULL if the buffer is too small
*/
virtual nsapi_error_t get_netmask(SocketAddress *address);
nsapi_error_t get_netmask(SocketAddress *address) override;
/** Copies gateway address of the network interface to user supplied buffer
*
@ -117,7 +117,7 @@ public:
* @param buflen size of supplied buffer
* @return Pointer to a buffer, or NULL if the buffer is too small
*/
virtual nsapi_error_t get_gateway(SocketAddress *address);
nsapi_error_t get_gateway(SocketAddress *address) override;
private:
friend class LWIP;
@ -228,7 +228,7 @@ public:
* @param[out] interface_out pointer to stack interface object controlling the EMAC
* @return NSAPI_ERROR_OK on success, or error code
*/
virtual nsapi_error_t add_ethernet_interface(EMAC &emac, bool default_if, OnboardNetworkStack::Interface **interface_out);
nsapi_error_t add_ethernet_interface(EMAC &emac, bool default_if, OnboardNetworkStack::Interface **interface_out) override;
/** Register a network interface with the IP stack
*
@ -240,7 +240,7 @@ public:
* @param[out] interface_out pointer to stack interface object controlling the L3IP
* @return NSAPI_ERROR_OK on success, or error code
*/
virtual nsapi_error_t add_l3ip_interface(L3IP &l3ip, bool default_if, OnboardNetworkStack::Interface **interface_out);
nsapi_error_t add_l3ip_interface(L3IP &l3ip, bool default_if, OnboardNetworkStack::Interface **interface_out) override;
/** Register a PPP interface with the IP stack
*
@ -259,7 +259,7 @@ public:
* @param[out] interface_out set to interface handle that must be passed to subsequent mbed_stack calls
* @return NSAPI_ERROR_OK on success, or error code
*/
virtual nsapi_error_t add_ppp_interface(PPP &ppp, bool default_if, OnboardNetworkStack::Interface **interface_out);
nsapi_error_t add_ppp_interface(PPP &ppp, bool default_if, OnboardNetworkStack::Interface **interface_out) override;
/** Remove a network interface from IP stack
*
@ -267,7 +267,7 @@ public:
* @param[out] interface_out pointer to stack interface object controlling the L3IP
* @return NSAPI_ERROR_OK on success, or error code
*/
virtual nsapi_error_t remove_ethernet_interface(OnboardNetworkStack::Interface **interface_out);
nsapi_error_t remove_ethernet_interface(OnboardNetworkStack::Interface **interface_out) override;
/** Remove a network interface from IP stack
*
@ -275,7 +275,7 @@ public:
* @param[out] interface_out pointer to stack interface object controlling the PPP
* @return NSAPI_ERROR_OK on success, or error code
*/
virtual nsapi_error_t remove_l3ip_interface(OnboardNetworkStack::Interface **interface_out);
nsapi_error_t remove_l3ip_interface(OnboardNetworkStack::Interface **interface_out) override;
/** Remove a network interface from IP stack
*
@ -283,7 +283,7 @@ public:
* @param[out] interface_out pointer to stack interface object controlling the PPP
* @return NSAPI_ERROR_OK on success, or error code
*/
virtual nsapi_error_t remove_ppp_interface(OnboardNetworkStack::Interface **interface_out);
nsapi_error_t remove_ppp_interface(OnboardNetworkStack::Interface **interface_out) override;
/** Get a domain name server from a list of servers to query
*
@ -294,7 +294,7 @@ public:
* @param address Destination for the host address
* @return 0 on success, negative error code on failure
*/
virtual nsapi_error_t get_dns_server(int index, SocketAddress *address, const char *interface_name);
nsapi_error_t get_dns_server(int index, SocketAddress *address, const char *interface_name) override;
/** Add a domain name server to list of servers to query
*
@ -302,21 +302,20 @@ public:
* @param interface_name Network interface name
* @return NSAPI_ERROR_OK on success, negative error code on failure
*/
virtual nsapi_error_t add_dns_server(const SocketAddress &address, const char *interface_name);
nsapi_error_t add_dns_server(const SocketAddress &address, const char *interface_name) override;
/** @copydoc NetworkStack::get_ip_address */
virtual nsapi_error_t get_ip_address(SocketAddress *address);
/** @copydoc NetworkStack::get_ip_address_if */
virtual nsapi_error_t get_ip_address_if(SocketAddress *address, const char *interface_name);
nsapi_error_t get_ip_address_if(SocketAddress *address, const char *interface_name) override;
/** Set the network interface as default one
*/
virtual void set_default_interface(OnboardNetworkStack::Interface *interface);
void set_default_interface(OnboardNetworkStack::Interface *interface) override;
protected:
LWIP();
virtual ~LWIP() {}
/** Opens a socket
*
@ -330,7 +329,7 @@ protected:
* @param proto Protocol of socket to open, NSAPI_TCP or NSAPI_UDP
* @return 0 on success, negative error code on failure
*/
virtual nsapi_error_t socket_open(nsapi_socket_t *handle, nsapi_protocol_t proto);
nsapi_error_t socket_open(nsapi_socket_t *handle, nsapi_protocol_t proto) override;
/** Close the socket
*
@ -340,7 +339,7 @@ protected:
* @param handle Socket handle
* @return 0 on success, negative error code on failure
*/
virtual nsapi_error_t socket_close(nsapi_socket_t handle);
nsapi_error_t socket_close(nsapi_socket_t handle) override;
/** Bind a specific address to a socket
*
@ -351,7 +350,7 @@ protected:
* @param address Local address to bind
* @return 0 on success, negative error code on failure.
*/
virtual nsapi_error_t socket_bind(nsapi_socket_t handle, const SocketAddress &address);
nsapi_error_t socket_bind(nsapi_socket_t handle, const SocketAddress &address) override;
/** Listen for connections on a TCP socket
*
@ -363,7 +362,7 @@ protected:
* simultaneously
* @return 0 on success, negative error code on failure
*/
virtual nsapi_error_t socket_listen(nsapi_socket_t handle, int backlog);
nsapi_error_t socket_listen(nsapi_socket_t handle, int backlog) override;
/** Connects TCP socket to a remote host
*
@ -374,7 +373,7 @@ protected:
* @param address The SocketAddress of the remote host
* @return 0 on success, negative error code on failure
*/
virtual nsapi_error_t socket_connect(nsapi_socket_t handle, const SocketAddress &address);
nsapi_error_t socket_connect(nsapi_socket_t handle, const SocketAddress &address) override;
/** Accepts a connection on a TCP socket
*
@ -394,8 +393,8 @@ protected:
* @param address Destination for the remote address or NULL
* @return 0 on success, negative error code on failure
*/
virtual nsapi_error_t socket_accept(nsapi_socket_t server,
nsapi_socket_t *handle, SocketAddress *address = 0);
nsapi_error_t socket_accept(nsapi_socket_t server,
nsapi_socket_t *handle, SocketAddress *address = 0) override;
/** Send data over a TCP socket
*
@ -411,8 +410,8 @@ protected:
* @return Number of sent bytes on success, negative error
* code on failure
*/
virtual nsapi_size_or_error_t socket_send(nsapi_socket_t handle,
const void *data, nsapi_size_t size);
nsapi_size_or_error_t socket_send(nsapi_socket_t handle,
const void *data, nsapi_size_t size) override;
/** Receive data over a TCP socket
*
@ -428,8 +427,8 @@ protected:
* @return Number of received bytes on success, negative error
* code on failure
*/
virtual nsapi_size_or_error_t socket_recv(nsapi_socket_t handle,
void *data, nsapi_size_t size);
nsapi_size_or_error_t socket_recv(nsapi_socket_t handle,
void *data, nsapi_size_t size) override;
/** Send a packet over a UDP socket
*
@ -446,8 +445,8 @@ protected:
* @return Number of sent bytes on success, negative error
* code on failure
*/
virtual nsapi_size_or_error_t socket_sendto(nsapi_socket_t handle, const SocketAddress &address,
const void *data, nsapi_size_t size);
nsapi_size_or_error_t socket_sendto(nsapi_socket_t handle, const SocketAddress &address,
const void *data, nsapi_size_t size) override;
/** Receive a packet over a UDP socket
*
@ -464,8 +463,8 @@ protected:
* @return Number of received bytes on success, negative error
* code on failure
*/
virtual nsapi_size_or_error_t socket_recvfrom(nsapi_socket_t handle, SocketAddress *address,
void *buffer, nsapi_size_t size);
nsapi_size_or_error_t socket_recvfrom(nsapi_socket_t handle, SocketAddress *address,
void *buffer, nsapi_size_t size) override;
/** Register a callback on state change of the socket
*
@ -480,7 +479,7 @@ protected:
* @param callback Function to call on state change
* @param data Argument to pass to callback
*/
virtual void socket_attach(nsapi_socket_t handle, void (*callback)(void *), void *data);
void socket_attach(nsapi_socket_t handle, void (*callback)(void *), void *data) override;
/* Set stack-specific socket options
*
@ -495,8 +494,8 @@ protected:
* @param optlen Length of the option value
* @return 0 on success, negative error code on failure
*/
virtual nsapi_error_t setsockopt(nsapi_socket_t handle, int level,
int optname, const void *optval, unsigned optlen);
nsapi_error_t setsockopt(nsapi_socket_t handle, int level,
int optname, const void *optval, unsigned optlen) override;
/* Get stack-specific socket options
*
@ -511,8 +510,8 @@ protected:
* @param optlen Length of the option value
* @return 0 on success, negative error code on failure
*/
virtual nsapi_error_t getsockopt(nsapi_socket_t handle, int level,
int optname, void *optval, unsigned *optlen);
nsapi_error_t getsockopt(nsapi_socket_t handle, int level,
int optname, void *optval, unsigned *optlen) override;
private:
/** Call in callback
@ -533,7 +532,7 @@ private:
*
* @return Call in callback
*/
virtual call_in_callback_cb_t get_call_in_callback();
call_in_callback_cb_t get_call_in_callback() override;
/** Call a callback after a delay
*
@ -544,7 +543,7 @@ private:
* @param func Callback to be called
* @return 0 on success, negative error code on failure
*/
virtual nsapi_error_t call_in(int delay, mbed::Callback<void()> func);
nsapi_error_t call_in(int delay, mbed::Callback<void()> func) override;
struct mbed_lwip_socket {
bool in_use;