From 8e7d775448405d8fff6ef07b88e44f70d4a1820c Mon Sep 17 00:00:00 2001 From: Li Cao Date: Wed, 14 Oct 2020 22:19:45 +0800 Subject: [PATCH] [common] use non-copyable for more instance-unique classes (#5639) This commit applies NonCopyable for more classes that has unique object in an Instance. --- src/core/backbone_router/bbr_leader.hpp | 3 ++- src/core/backbone_router/bbr_local.hpp | 3 ++- src/core/backbone_router/bbr_manager.hpp | 3 ++- src/core/backbone_router/multicast_listeners_table.hpp | 1 + src/core/mac/data_poll_handler.hpp | 3 ++- src/core/mac/data_poll_sender.hpp | 3 ++- src/core/mac/mac.hpp | 3 ++- src/core/mac/mac_filter.hpp | 3 ++- src/core/mac/sub_mac.hpp | 3 ++- src/core/meshcop/border_agent.hpp | 3 ++- src/core/meshcop/commissioner.hpp | 3 ++- src/core/meshcop/dataset_manager.hpp | 5 +++-- src/core/meshcop/joiner.hpp | 3 ++- src/core/meshcop/joiner_router.hpp | 3 ++- src/core/meshcop/meshcop_leader.hpp | 3 ++- src/core/net/dhcp6_client.hpp | 3 ++- src/core/net/dhcp6_server.hpp | 3 ++- src/core/net/dns_client.hpp | 3 ++- src/core/net/icmp6.hpp | 3 ++- src/core/net/ip6_filter.hpp | 3 ++- src/core/net/ip6_mpl.hpp | 3 ++- src/core/net/sntp_client.hpp | 3 ++- src/core/net/udp6.hpp | 3 ++- src/core/thread/address_resolver.hpp | 3 ++- src/core/thread/child_table.hpp | 3 ++- src/core/thread/csl_tx_scheduler.hpp | 3 ++- src/core/thread/discover_scanner.hpp | 3 ++- src/core/thread/dua_manager.hpp | 3 ++- src/core/thread/energy_scan_server.hpp | 3 ++- src/core/thread/indirect_sender.hpp | 3 ++- src/core/thread/key_manager.hpp | 3 ++- src/core/thread/link_metrics.hpp | 3 ++- src/core/thread/lowpan.hpp | 3 ++- src/core/thread/mesh_forwarder.hpp | 3 ++- src/core/thread/mle.hpp | 3 ++- src/core/thread/mlr_manager.hpp | 3 ++- src/core/thread/neighbor_table.hpp | 3 ++- src/core/thread/network_data_leader_ftd.hpp | 3 ++- src/core/thread/network_data_local.hpp | 3 ++- src/core/thread/network_data_notifier.hpp | 3 ++- src/core/thread/network_diagnostic.hpp | 3 ++- src/core/thread/panid_query_server.hpp | 3 ++- src/core/thread/router_table.hpp | 3 ++- src/core/thread/src_match_controller.hpp | 3 ++- src/core/thread/time_sync_service.hpp | 3 ++- src/core/utils/child_supervision.hpp | 7 ++++--- src/core/utils/jam_detector.hpp | 3 ++- src/core/utils/slaac_address.hpp | 3 ++- 48 files changed, 98 insertions(+), 50 deletions(-) diff --git a/src/core/backbone_router/bbr_leader.hpp b/src/core/backbone_router/bbr_leader.hpp index e8dda3043..53e373cdf 100644 --- a/src/core/backbone_router/bbr_leader.hpp +++ b/src/core/backbone_router/bbr_leader.hpp @@ -43,6 +43,7 @@ #include "coap/coap.hpp" #include "coap/coap_message.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "net/ip6_address.hpp" namespace ot { @@ -55,7 +56,7 @@ typedef otBackboneRouterConfig BackboneRouterConfig; * This class implements the basic Primary Backbone Router service operations. * */ -class Leader : public InstanceLocator +class Leader : public InstanceLocator, private NonCopyable { public: // Primary Backbone Router Service state or state change. diff --git a/src/core/backbone_router/bbr_local.hpp b/src/core/backbone_router/bbr_local.hpp index 018d5ba49..c141fa6c7 100644 --- a/src/core/backbone_router/bbr_local.hpp +++ b/src/core/backbone_router/bbr_local.hpp @@ -42,6 +42,7 @@ #include "backbone_router/bbr_leader.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "net/netif.hpp" #include "thread/network_data.hpp" @@ -53,7 +54,7 @@ namespace BackboneRouter { * This class implements the definitions for local Backbone Router service. * */ -class Local : public InstanceLocator +class Local : public InstanceLocator, private NonCopyable { public: typedef otBackboneRouterState BackboneRouterState; diff --git a/src/core/backbone_router/bbr_manager.hpp b/src/core/backbone_router/bbr_manager.hpp index fa97a1d4d..c7b939f29 100644 --- a/src/core/backbone_router/bbr_manager.hpp +++ b/src/core/backbone_router/bbr_manager.hpp @@ -45,6 +45,7 @@ #include "backbone_router/multicast_listeners_table.hpp" #include "backbone_router/ndproxy_table.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "net/netif.hpp" #include "thread/network_data.hpp" @@ -56,7 +57,7 @@ namespace BackboneRouter { * This class implements the definitions for Backbone Router management. * */ -class Manager : public InstanceLocator +class Manager : public InstanceLocator, private NonCopyable { friend class ot::Notifier; diff --git a/src/core/backbone_router/multicast_listeners_table.hpp b/src/core/backbone_router/multicast_listeners_table.hpp index 2eb9f035e..53d9f5f44 100644 --- a/src/core/backbone_router/multicast_listeners_table.hpp +++ b/src/core/backbone_router/multicast_listeners_table.hpp @@ -40,6 +40,7 @@ #include +#include "common/non_copyable.hpp" #include "common/notifier.hpp" #include "common/time.hpp" #include "net/ip6_address.hpp" diff --git a/src/core/mac/data_poll_handler.hpp b/src/core/mac/data_poll_handler.hpp index c087149ef..5930e3471 100644 --- a/src/core/mac/data_poll_handler.hpp +++ b/src/core/mac/data_poll_handler.hpp @@ -38,6 +38,7 @@ #include "common/code_utils.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/timer.hpp" #include "mac/mac.hpp" #include "mac/mac_frame.hpp" @@ -60,7 +61,7 @@ class Child; * This class implements the data poll (mac data request command) handler. * */ -class DataPollHandler : public InstanceLocator +class DataPollHandler : public InstanceLocator, private NonCopyable { friend class Mac::Mac; diff --git a/src/core/mac/data_poll_sender.hpp b/src/core/mac/data_poll_sender.hpp index a292ed5a2..a7574a5a4 100644 --- a/src/core/mac/data_poll_sender.hpp +++ b/src/core/mac/data_poll_sender.hpp @@ -38,6 +38,7 @@ #include "common/code_utils.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/timer.hpp" #include "mac/mac_frame.hpp" #include "thread/topology.hpp" @@ -58,7 +59,7 @@ namespace ot { * */ -class DataPollSender : public InstanceLocator +class DataPollSender : public InstanceLocator, private NonCopyable { public: enum diff --git a/src/core/mac/mac.hpp b/src/core/mac/mac.hpp index 0483cc2d5..c02b4646d 100644 --- a/src/core/mac/mac.hpp +++ b/src/core/mac/mac.hpp @@ -40,6 +40,7 @@ #include #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/tasklet.hpp" #include "common/time.hpp" #include "common/timer.hpp" @@ -122,7 +123,7 @@ typedef otEnergyScanResult EnergyScanResult; * This class implements the IEEE 802.15.4 MAC. * */ -class Mac : public InstanceLocator +class Mac : public InstanceLocator, private NonCopyable { friend class ot::Instance; diff --git a/src/core/mac/mac_filter.hpp b/src/core/mac/mac_filter.hpp index a2183b672..4a6852327 100644 --- a/src/core/mac/mac_filter.hpp +++ b/src/core/mac/mac_filter.hpp @@ -38,6 +38,7 @@ #include +#include "common/non_copyable.hpp" #include "mac/mac_frame.hpp" #if OPENTHREAD_CONFIG_MAC_FILTER_ENABLE @@ -56,7 +57,7 @@ namespace Mac { * This class implements Mac Filter on IEEE 802.15.4 frames. * */ -class Filter +class Filter : private NonCopyable { public: /** diff --git a/src/core/mac/sub_mac.hpp b/src/core/mac/sub_mac.hpp index bb6cf75f6..a50e23a03 100644 --- a/src/core/mac/sub_mac.hpp +++ b/src/core/mac/sub_mac.hpp @@ -39,6 +39,7 @@ #include #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/timer.hpp" #include "mac/mac_frame.hpp" #include "radio/radio.hpp" @@ -74,7 +75,7 @@ namespace Mac { * addresses and PAN Id. * */ -class SubMac : public InstanceLocator +class SubMac : public InstanceLocator, private NonCopyable { friend class Radio::Callbacks; diff --git a/src/core/meshcop/border_agent.hpp b/src/core/meshcop/border_agent.hpp index a10eebd4f..20c9e6f21 100644 --- a/src/core/meshcop/border_agent.hpp +++ b/src/core/meshcop/border_agent.hpp @@ -40,6 +40,7 @@ #include "coap/coap.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/notifier.hpp" #include "net/udp6.hpp" @@ -49,7 +50,7 @@ class ThreadNetif; namespace MeshCoP { -class BorderAgent : public InstanceLocator +class BorderAgent : public InstanceLocator, private NonCopyable { friend class ot::Notifier; diff --git a/src/core/meshcop/commissioner.hpp b/src/core/meshcop/commissioner.hpp index 5bf5a6b4a..bd577c600 100644 --- a/src/core/meshcop/commissioner.hpp +++ b/src/core/meshcop/commissioner.hpp @@ -41,6 +41,7 @@ #include "coap/coap.hpp" #include "coap/coap_secure.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/timer.hpp" #include "mac/mac_types.hpp" #include "meshcop/announce_begin_client.hpp" @@ -56,7 +57,7 @@ namespace ot { namespace MeshCoP { -class Commissioner : public InstanceLocator +class Commissioner : public InstanceLocator, private NonCopyable { public: /** diff --git a/src/core/meshcop/dataset_manager.hpp b/src/core/meshcop/dataset_manager.hpp index b9a46cf44..895d94191 100644 --- a/src/core/meshcop/dataset_manager.hpp +++ b/src/core/meshcop/dataset_manager.hpp @@ -39,6 +39,7 @@ #include "coap/coap.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/timer.hpp" #include "mac/channel_mask.hpp" #include "meshcop/dataset.hpp" @@ -359,7 +360,7 @@ private: #endif // OPENTHREAD_FTD }; -class ActiveDataset : public DatasetManager +class ActiveDataset : public DatasetManager, private NonCopyable { public: /** @@ -489,7 +490,7 @@ private: #endif }; -class PendingDataset : public DatasetManager +class PendingDataset : public DatasetManager, private NonCopyable { public: /** diff --git a/src/core/meshcop/joiner.hpp b/src/core/meshcop/joiner.hpp index 69bb5fcc8..176ad3303 100644 --- a/src/core/meshcop/joiner.hpp +++ b/src/core/meshcop/joiner.hpp @@ -44,6 +44,7 @@ #include "common/locator.hpp" #include "common/logging.hpp" #include "common/message.hpp" +#include "common/non_copyable.hpp" #include "mac/mac_types.hpp" #include "meshcop/dtls.hpp" #include "meshcop/meshcop.hpp" @@ -54,7 +55,7 @@ namespace ot { namespace MeshCoP { -class Joiner : public InstanceLocator +class Joiner : public InstanceLocator, private NonCopyable { public: /** diff --git a/src/core/meshcop/joiner_router.hpp b/src/core/meshcop/joiner_router.hpp index 93b8d3441..7ed5f6479 100644 --- a/src/core/meshcop/joiner_router.hpp +++ b/src/core/meshcop/joiner_router.hpp @@ -40,6 +40,7 @@ #include "coap/coap_message.hpp" #include "common/locator.hpp" #include "common/message.hpp" +#include "common/non_copyable.hpp" #include "common/notifier.hpp" #include "common/timer.hpp" #include "mac/mac_types.hpp" @@ -51,7 +52,7 @@ namespace ot { namespace MeshCoP { -class JoinerRouter : public InstanceLocator +class JoinerRouter : public InstanceLocator, private NonCopyable { friend class ot::Notifier; diff --git a/src/core/meshcop/meshcop_leader.hpp b/src/core/meshcop/meshcop_leader.hpp index 25b8c02ef..d07403915 100644 --- a/src/core/meshcop/meshcop_leader.hpp +++ b/src/core/meshcop/meshcop_leader.hpp @@ -38,6 +38,7 @@ #include "coap/coap.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/timer.hpp" #include "meshcop/meshcop_tlvs.hpp" #include "net/udp6.hpp" @@ -61,7 +62,7 @@ public: SteeringDataTlv mSteeringData; } OT_TOOL_PACKED_END; -class Leader : public InstanceLocator +class Leader : public InstanceLocator, private NonCopyable { public: /** diff --git a/src/core/net/dhcp6_client.hpp b/src/core/net/dhcp6_client.hpp index 482fe3959..6246ad6d6 100644 --- a/src/core/net/dhcp6_client.hpp +++ b/src/core/net/dhcp6_client.hpp @@ -38,6 +38,7 @@ #include "common/locator.hpp" #include "common/message.hpp" +#include "common/non_copyable.hpp" #include "common/timer.hpp" #include "common/trickle_timer.hpp" #include "mac/mac.hpp" @@ -64,7 +65,7 @@ namespace Dhcp6 { * This class implements DHCPv6 Client. * */ -class Client : public InstanceLocator +class Client : public InstanceLocator, private NonCopyable { public: /** diff --git a/src/core/net/dhcp6_server.hpp b/src/core/net/dhcp6_server.hpp index 975fc4cac..0890633c8 100644 --- a/src/core/net/dhcp6_server.hpp +++ b/src/core/net/dhcp6_server.hpp @@ -37,6 +37,7 @@ #include "openthread-core-config.h" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "mac/mac.hpp" #include "mac/mac_types.hpp" #include "net/dhcp6.hpp" @@ -57,7 +58,7 @@ namespace Dhcp6 { * */ -class Server : public InstanceLocator +class Server : public InstanceLocator, private NonCopyable { public: /** diff --git a/src/core/net/dns_client.hpp b/src/core/net/dns_client.hpp index 50c96f0a5..e93e1fbba 100644 --- a/src/core/net/dns_client.hpp +++ b/src/core/net/dns_client.hpp @@ -34,6 +34,7 @@ #include #include "common/message.hpp" +#include "common/non_copyable.hpp" #include "common/timer.hpp" #include "net/dns_headers.hpp" #include "net/ip6.hpp" @@ -51,7 +52,7 @@ namespace Dns { * This class implements DNS client. * */ -class Client +class Client : private NonCopyable { public: /** diff --git a/src/core/net/icmp6.hpp b/src/core/net/icmp6.hpp index 6ef952686..592d4f047 100644 --- a/src/core/net/icmp6.hpp +++ b/src/core/net/icmp6.hpp @@ -42,6 +42,7 @@ #include "common/encoding.hpp" #include "common/linked_list.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "net/ip6_headers.hpp" namespace ot { @@ -63,7 +64,7 @@ using ot::Encoding::BigEndian::HostSwap16; * This class implements ICMPv6. * */ -class Icmp : public InstanceLocator +class Icmp : public InstanceLocator, private NonCopyable { public: /* diff --git a/src/core/net/ip6_filter.hpp b/src/core/net/ip6_filter.hpp index d1c82eb1b..5fc63748a 100644 --- a/src/core/net/ip6_filter.hpp +++ b/src/core/net/ip6_filter.hpp @@ -37,6 +37,7 @@ #include "openthread-core-config.h" #include "common/message.hpp" +#include "common/non_copyable.hpp" namespace ot { namespace Ip6 { @@ -55,7 +56,7 @@ namespace Ip6 { * This class implements an IPv6 datagram filter. * */ -class Filter +class Filter : private NonCopyable { public: /** diff --git a/src/core/net/ip6_mpl.hpp b/src/core/net/ip6_mpl.hpp index 62cc964dc..9323d792b 100644 --- a/src/core/net/ip6_mpl.hpp +++ b/src/core/net/ip6_mpl.hpp @@ -38,6 +38,7 @@ #include "common/locator.hpp" #include "common/message.hpp" +#include "common/non_copyable.hpp" #include "common/timer.hpp" #include "net/ip6_headers.hpp" @@ -186,7 +187,7 @@ private: * This class implements MPL message processing. * */ -class Mpl : public InstanceLocator +class Mpl : public InstanceLocator, private NonCopyable { public: /** diff --git a/src/core/net/sntp_client.hpp b/src/core/net/sntp_client.hpp index 243371ed4..a5b55b5d4 100644 --- a/src/core/net/sntp_client.hpp +++ b/src/core/net/sntp_client.hpp @@ -34,6 +34,7 @@ #include #include "common/message.hpp" +#include "common/non_copyable.hpp" #include "common/timer.hpp" #include "net/ip6.hpp" #include "net/netif.hpp" @@ -483,7 +484,7 @@ private: * This class implements SNTP client. * */ -class Client +class Client : private NonCopyable { public: /** diff --git a/src/core/net/udp6.hpp b/src/core/net/udp6.hpp index c1535a02c..e102ee697 100644 --- a/src/core/net/udp6.hpp +++ b/src/core/net/udp6.hpp @@ -41,6 +41,7 @@ #include "common/linked_list.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "net/ip6_headers.hpp" namespace ot { @@ -62,7 +63,7 @@ class Udp; * This class implements core UDP message handling. * */ -class Udp : public InstanceLocator +class Udp : public InstanceLocator, private NonCopyable { public: /** diff --git a/src/core/thread/address_resolver.hpp b/src/core/thread/address_resolver.hpp index 2cd84c45b..6e63d5bdb 100644 --- a/src/core/thread/address_resolver.hpp +++ b/src/core/thread/address_resolver.hpp @@ -39,6 +39,7 @@ #include "coap/coap.hpp" #include "common/linked_list.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/time_ticker.hpp" #include "common/timer.hpp" #include "mac/mac.hpp" @@ -61,7 +62,7 @@ namespace ot { * This class implements the EID-to-RLOC mapping and caching. * */ -class AddressResolver : public InstanceLocator +class AddressResolver : public InstanceLocator, private NonCopyable { friend class TimeTicker; diff --git a/src/core/thread/child_table.hpp b/src/core/thread/child_table.hpp index e0a476062..d952c39db 100644 --- a/src/core/thread/child_table.hpp +++ b/src/core/thread/child_table.hpp @@ -39,6 +39,7 @@ #if OPENTHREAD_FTD #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "thread/topology.hpp" namespace ot { @@ -47,7 +48,7 @@ namespace ot { * This class represents the Thread child table. * */ -class ChildTable : public InstanceLocator +class ChildTable : public InstanceLocator, private NonCopyable { friend class NeighborTable; class IteratorBuilder; diff --git a/src/core/thread/csl_tx_scheduler.hpp b/src/core/thread/csl_tx_scheduler.hpp index bc16d2979..50b99cb19 100644 --- a/src/core/thread/csl_tx_scheduler.hpp +++ b/src/core/thread/csl_tx_scheduler.hpp @@ -33,6 +33,7 @@ #include "common/locator.hpp" #include "common/message.hpp" +#include "common/non_copyable.hpp" #include "common/time.hpp" #include "mac/mac.hpp" #include "mac/mac_frame.hpp" @@ -57,7 +58,7 @@ class Child; * This class implements CSL tx scheduling functionality. * */ -class CslTxScheduler : public InstanceLocator +class CslTxScheduler : public InstanceLocator, private NonCopyable { friend class Mac::Mac; friend class IndirectSender; diff --git a/src/core/thread/discover_scanner.hpp b/src/core/thread/discover_scanner.hpp index 9dab4f64a..eccc08b3f 100644 --- a/src/core/thread/discover_scanner.hpp +++ b/src/core/thread/discover_scanner.hpp @@ -37,6 +37,7 @@ #include "openthread-core-config.h" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/timer.hpp" #include "mac/channel_mask.hpp" #include "mac/mac.hpp" @@ -54,7 +55,7 @@ namespace Mle { * This class implements MLE Discover Scan. * */ -class DiscoverScanner : public InstanceLocator +class DiscoverScanner : public InstanceLocator, private NonCopyable { friend class ot::Instance; friend class ot::MeshForwarder; diff --git a/src/core/thread/dua_manager.hpp b/src/core/thread/dua_manager.hpp index d0eccd57b..11e75f0e2 100644 --- a/src/core/thread/dua_manager.hpp +++ b/src/core/thread/dua_manager.hpp @@ -42,6 +42,7 @@ #include "coap/coap.hpp" #include "coap/coap_message.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/notifier.hpp" #include "common/tasklet.hpp" #include "common/time.hpp" @@ -71,7 +72,7 @@ namespace ot { * This class implements managing DUA. * */ -class DuaManager : public InstanceLocator +class DuaManager : public InstanceLocator, private NonCopyable { friend class ot::Notifier; friend class ot::TimeTicker; diff --git a/src/core/thread/energy_scan_server.hpp b/src/core/thread/energy_scan_server.hpp index 145e11d9c..26ea35543 100644 --- a/src/core/thread/energy_scan_server.hpp +++ b/src/core/thread/energy_scan_server.hpp @@ -38,6 +38,7 @@ #include "coap/coap.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/notifier.hpp" #include "common/timer.hpp" #include "net/ip6_address.hpp" @@ -50,7 +51,7 @@ namespace ot { * This class implements handling Energy Scan Requests. * */ -class EnergyScanServer : public InstanceLocator +class EnergyScanServer : public InstanceLocator, private NonCopyable { friend class ot::Notifier; diff --git a/src/core/thread/indirect_sender.hpp b/src/core/thread/indirect_sender.hpp index b118ff16d..95bd141b4 100644 --- a/src/core/thread/indirect_sender.hpp +++ b/src/core/thread/indirect_sender.hpp @@ -38,6 +38,7 @@ #include "common/locator.hpp" #include "common/message.hpp" +#include "common/non_copyable.hpp" #include "mac/data_poll_handler.hpp" #include "mac/mac_frame.hpp" #include "thread/csl_tx_scheduler.hpp" @@ -62,7 +63,7 @@ class Child; * This class implements indirect transmission. * */ -class IndirectSender : public InstanceLocator, public IndirectSenderBase +class IndirectSender : public InstanceLocator, public IndirectSenderBase, private NonCopyable { friend class Instance; friend class DataPollHandler::Callbacks; diff --git a/src/core/thread/key_manager.hpp b/src/core/thread/key_manager.hpp index a34b0d2c0..7528d9e24 100644 --- a/src/core/thread/key_manager.hpp +++ b/src/core/thread/key_manager.hpp @@ -43,6 +43,7 @@ #include "common/clearable.hpp" #include "common/equatable.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/random.hpp" #include "common/timer.hpp" #include "crypto/hmac_sha256.hpp" @@ -111,7 +112,7 @@ typedef Mac::Key Kek; * This class defines Thread Key Manager. * */ -class KeyManager : public InstanceLocator +class KeyManager : public InstanceLocator, private NonCopyable { public: /** diff --git a/src/core/thread/link_metrics.hpp b/src/core/thread/link_metrics.hpp index 515292feb..f906f8ad3 100644 --- a/src/core/thread/link_metrics.hpp +++ b/src/core/thread/link_metrics.hpp @@ -42,6 +42,7 @@ #include "common/code_utils.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "link_metrics_tlvs.hpp" #include "topology.hpp" @@ -57,7 +58,7 @@ namespace ot { * @{ */ -class LinkMetrics : public InstanceLocator +class LinkMetrics : public InstanceLocator, private NonCopyable { public: /** diff --git a/src/core/thread/lowpan.hpp b/src/core/thread/lowpan.hpp index 289573491..dbb19017b 100644 --- a/src/core/thread/lowpan.hpp +++ b/src/core/thread/lowpan.hpp @@ -39,6 +39,7 @@ #include "common/debug.hpp" #include "common/locator.hpp" #include "common/message.hpp" +#include "common/non_copyable.hpp" #include "mac/mac_types.hpp" #include "net/ip6.hpp" #include "net/ip6_address.hpp" @@ -218,7 +219,7 @@ private: * This class implements LOWPAN_IPHC header compression. * */ -class Lowpan : public InstanceLocator +class Lowpan : public InstanceLocator, private NonCopyable { public: /** diff --git a/src/core/thread/mesh_forwarder.hpp b/src/core/thread/mesh_forwarder.hpp index ae4b48ca2..caadddddc 100644 --- a/src/core/thread/mesh_forwarder.hpp +++ b/src/core/thread/mesh_forwarder.hpp @@ -38,6 +38,7 @@ #include "common/clearable.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/tasklet.hpp" #include "common/time_ticker.hpp" #include "mac/channel_mask.hpp" @@ -144,7 +145,7 @@ public: * This class implements mesh forwarding within Thread. * */ -class MeshForwarder : public InstanceLocator +class MeshForwarder : public InstanceLocator, private NonCopyable { friend class Mac::Mac; friend class Instance; diff --git a/src/core/thread/mle.hpp b/src/core/thread/mle.hpp index 3c9fa8ab0..6370aa0d2 100644 --- a/src/core/thread/mle.hpp +++ b/src/core/thread/mle.hpp @@ -38,6 +38,7 @@ #include "common/encoding.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/timer.hpp" #include "mac/mac.hpp" #include "meshcop/joiner_router.hpp" @@ -89,7 +90,7 @@ namespace Mle { * This class implements MLE functionality required by the Thread EndDevices, Router, and Leader roles. * */ -class Mle : public InstanceLocator +class Mle : public InstanceLocator, private NonCopyable { friend class DiscoverScanner; friend class ot::Notifier; diff --git a/src/core/thread/mlr_manager.hpp b/src/core/thread/mlr_manager.hpp index c465617df..d8f6f5ff7 100644 --- a/src/core/thread/mlr_manager.hpp +++ b/src/core/thread/mlr_manager.hpp @@ -41,6 +41,7 @@ #include "backbone_router/bbr_leader.hpp" #include "coap/coap_message.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/notifier.hpp" #include "common/time_ticker.hpp" #include "common/timer.hpp" @@ -68,7 +69,7 @@ namespace ot { * This class implements MLR management. * */ -class MlrManager : public InstanceLocator +class MlrManager : public InstanceLocator, private NonCopyable { friend class ot::Notifier; friend class ot::TimeTicker; diff --git a/src/core/thread/neighbor_table.hpp b/src/core/thread/neighbor_table.hpp index 8fa053636..b10f66f9b 100644 --- a/src/core/thread/neighbor_table.hpp +++ b/src/core/thread/neighbor_table.hpp @@ -37,6 +37,7 @@ #include "openthread-core-config.h" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "thread/topology.hpp" namespace ot { @@ -45,7 +46,7 @@ namespace ot { * This class represents the Thread neighbor table. * */ -class NeighborTable : public InstanceLocator +class NeighborTable : public InstanceLocator, private NonCopyable { public: /** diff --git a/src/core/thread/network_data_leader_ftd.hpp b/src/core/thread/network_data_leader_ftd.hpp index fabafaafb..f76486dbf 100644 --- a/src/core/thread/network_data_leader_ftd.hpp +++ b/src/core/thread/network_data_leader_ftd.hpp @@ -39,6 +39,7 @@ #include #include "coap/coap.hpp" +#include "common/non_copyable.hpp" #include "common/timer.hpp" #include "net/ip6_address.hpp" #include "thread/mle_router.hpp" @@ -62,7 +63,7 @@ namespace NetworkData { * This class implements the Thread Network Data maintained by the Leader. * */ -class Leader : public LeaderBase +class Leader : public LeaderBase, private NonCopyable { public: /** diff --git a/src/core/thread/network_data_local.hpp b/src/core/thread/network_data_local.hpp index 2242fcb99..8eae4c9a3 100644 --- a/src/core/thread/network_data_local.hpp +++ b/src/core/thread/network_data_local.hpp @@ -37,6 +37,7 @@ #include "openthread-core-config.h" +#include "common/non_copyable.hpp" #include "thread/network_data.hpp" #if OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE || OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE @@ -58,7 +59,7 @@ namespace NetworkData { * This class implements the Thread Network Data contributed by the local device. * */ -class Local : public NetworkData +class Local : public NetworkData, private NonCopyable { public: /** diff --git a/src/core/thread/network_data_notifier.hpp b/src/core/thread/network_data_notifier.hpp index f817f337d..2c349b755 100644 --- a/src/core/thread/network_data_notifier.hpp +++ b/src/core/thread/network_data_notifier.hpp @@ -40,6 +40,7 @@ #include "coap/coap.hpp" #include "common/message.hpp" +#include "common/non_copyable.hpp" #include "common/notifier.hpp" namespace ot { @@ -49,7 +50,7 @@ namespace NetworkData { * This class implements the SVR_DATA.ntf transmission logic. * */ -class Notifier : public InstanceLocator +class Notifier : public InstanceLocator, private NonCopyable { friend class ot::Notifier; diff --git a/src/core/thread/network_diagnostic.hpp b/src/core/thread/network_diagnostic.hpp index 553ef670c..510a9ea3f 100644 --- a/src/core/thread/network_diagnostic.hpp +++ b/src/core/thread/network_diagnostic.hpp @@ -40,6 +40,7 @@ #include "coap/coap.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "net/udp6.hpp" #include "thread/network_diagnostic_tlvs.hpp" @@ -60,7 +61,7 @@ namespace NetworkDiagnostic { * This class implements the Network Diagnostic processing. * */ -class NetworkDiagnostic : public InstanceLocator +class NetworkDiagnostic : public InstanceLocator, private NonCopyable { public: enum diff --git a/src/core/thread/panid_query_server.hpp b/src/core/thread/panid_query_server.hpp index 78050388f..892124371 100644 --- a/src/core/thread/panid_query_server.hpp +++ b/src/core/thread/panid_query_server.hpp @@ -38,6 +38,7 @@ #include "coap/coap.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/timer.hpp" #include "mac/mac.hpp" #include "net/ip6_address.hpp" @@ -49,7 +50,7 @@ namespace ot { * This class implements handling PANID Query Requests. * */ -class PanIdQueryServer : public InstanceLocator +class PanIdQueryServer : public InstanceLocator, private NonCopyable { public: /** diff --git a/src/core/thread/router_table.hpp b/src/core/thread/router_table.hpp index 62521e7c4..f21fef24c 100644 --- a/src/core/thread/router_table.hpp +++ b/src/core/thread/router_table.hpp @@ -35,6 +35,7 @@ #include "common/encoding.hpp" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "mac/mac_types.hpp" #include "thread/mle_types.hpp" #include "thread/thread_tlvs.hpp" @@ -42,7 +43,7 @@ namespace ot { -class RouterTable : public InstanceLocator +class RouterTable : public InstanceLocator, private NonCopyable { friend class NeighborTable; class IteratorBuilder; diff --git a/src/core/thread/src_match_controller.hpp b/src/core/thread/src_match_controller.hpp index ee8d9a2d3..83abe9d4c 100644 --- a/src/core/thread/src_match_controller.hpp +++ b/src/core/thread/src_match_controller.hpp @@ -38,6 +38,7 @@ #include #include "common/locator.hpp" +#include "common/non_copyable.hpp" namespace ot { @@ -65,7 +66,7 @@ class Child; * address or an extended/long address can be added to the source address match table. * */ -class SourceMatchController : public InstanceLocator +class SourceMatchController : public InstanceLocator, private NonCopyable { public: /** diff --git a/src/core/thread/time_sync_service.hpp b/src/core/thread/time_sync_service.hpp index d1a00fe26..bbcee3281 100644 --- a/src/core/thread/time_sync_service.hpp +++ b/src/core/thread/time_sync_service.hpp @@ -41,6 +41,7 @@ #include "common/locator.hpp" #include "common/message.hpp" +#include "common/non_copyable.hpp" #include "common/notifier.hpp" #include "common/timer.hpp" @@ -50,7 +51,7 @@ namespace ot { * This class implements OpenThread Time Synchronization Service. * */ -class TimeSync : public InstanceLocator +class TimeSync : public InstanceLocator, private NonCopyable { friend class ot::Notifier; diff --git a/src/core/utils/child_supervision.hpp b/src/core/utils/child_supervision.hpp index 89ab4e048..0ec42dc78 100644 --- a/src/core/utils/child_supervision.hpp +++ b/src/core/utils/child_supervision.hpp @@ -41,6 +41,7 @@ #include "common/locator.hpp" #include "common/message.hpp" +#include "common/non_copyable.hpp" #include "common/notifier.hpp" #include "common/time_ticker.hpp" #include "common/timer.hpp" @@ -89,7 +90,7 @@ namespace Utils { * This class implements a child supervisor. * */ -class ChildSupervisor : public InstanceLocator +class ChildSupervisor : public InstanceLocator, private NonCopyable { friend class ot::Notifier; friend class ot::TimeTicker; @@ -191,7 +192,7 @@ public: * This class implements a child supervision listener. * */ -class SupervisionListener : public InstanceLocator +class SupervisionListener : public InstanceLocator, private NonCopyable { public: /** @@ -262,7 +263,7 @@ private: #else // #if OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE -class SupervisionListener +class SupervisionListener : private NonCopyable { public: SupervisionListener(otInstance &) {} diff --git a/src/core/utils/jam_detector.hpp b/src/core/utils/jam_detector.hpp index 4598f05fb..787b945d9 100644 --- a/src/core/utils/jam_detector.hpp +++ b/src/core/utils/jam_detector.hpp @@ -39,6 +39,7 @@ #include #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/notifier.hpp" #include "common/timer.hpp" @@ -48,7 +49,7 @@ class ThreadNetif; namespace Utils { -class JamDetector : public InstanceLocator +class JamDetector : public InstanceLocator, private NonCopyable { friend class ot::Notifier; diff --git a/src/core/utils/slaac_address.hpp b/src/core/utils/slaac_address.hpp index 620d2a044..f8a82e736 100644 --- a/src/core/utils/slaac_address.hpp +++ b/src/core/utils/slaac_address.hpp @@ -37,6 +37,7 @@ #include "openthread-core-config.h" #include "common/locator.hpp" +#include "common/non_copyable.hpp" #include "common/notifier.hpp" #include "net/netif.hpp" #include "thread/network_data.hpp" @@ -57,7 +58,7 @@ namespace Utils { * This class implements the SLAAC utility for Thread protocol. * */ -class Slaac : public InstanceLocator +class Slaac : public InstanceLocator, private NonCopyable { friend class ot::Notifier;