util: move CFReleaser from security/tpm
CFReleaser is used by both TPM backend and NetworkMonitor.
refs #3940
Change-Id: I39222bb4dec686d9338e6c4cb71108dd67f6cca1
diff --git a/src/net/detail/network-monitor-impl-osx.cpp b/src/net/detail/network-monitor-impl-osx.cpp
index b2129b5..57eceeb 100644
--- a/src/net/detail/network-monitor-impl-osx.cpp
+++ b/src/net/detail/network-monitor-impl-osx.cpp
@@ -68,6 +68,8 @@
namespace ndn {
namespace net {
+using util::CFReleaser;
+
NDN_LOG_INIT(ndn.NetworkMonitor);
NetworkMonitorImplOsx::NetworkMonitorImplOsx(boost::asio::io_service& io)
diff --git a/src/net/detail/network-monitor-impl-osx.hpp b/src/net/detail/network-monitor-impl-osx.hpp
index d1ce8f2..8de354c 100644
--- a/src/net/detail/network-monitor-impl-osx.hpp
+++ b/src/net/detail/network-monitor-impl-osx.hpp
@@ -29,7 +29,7 @@
#error "This file should not be compiled ..."
#endif
-#include "../../security/tpm/helper-osx.hpp"
+#include "../../util/cf-releaser-osx.hpp"
#include "../../util/scheduler.hpp"
#include "../../util/scheduler-scoped-event-id.hpp"
@@ -110,8 +110,8 @@
util::scheduler::ScopedEventId m_cfLoopEvent;
SCDynamicStoreContext m_context;
- CFReleaser<SCDynamicStoreRef> m_scStore;
- CFReleaser<CFRunLoopSourceRef> m_loopSource;
+ util::CFReleaser<SCDynamicStoreRef> m_scStore;
+ util::CFReleaser<CFRunLoopSourceRef> m_loopSource;
boost::asio::ip::udp::socket m_nullUdpSocket;
};
diff --git a/src/security/tpm/back-end-osx.cpp b/src/security/tpm/back-end-osx.cpp
index 7f1aed1..53c2295 100644
--- a/src/security/tpm/back-end-osx.cpp
+++ b/src/security/tpm/back-end-osx.cpp
@@ -21,7 +21,6 @@
#include "back-end-osx.hpp"
#include "key-handle-osx.hpp"
-#include "helper-osx.hpp"
#include "../transform/private-key.hpp"
#include "tpm.hpp"
@@ -34,6 +33,8 @@
namespace security {
namespace tpm {
+using util::CFReleaser;
+
class BackEndOsx::Impl
{
public:
diff --git a/src/security/tpm/back-end-osx.hpp b/src/security/tpm/back-end-osx.hpp
index 8759ef4..1a644d9 100644
--- a/src/security/tpm/back-end-osx.hpp
+++ b/src/security/tpm/back-end-osx.hpp
@@ -23,7 +23,7 @@
#define NDN_SECURITY_TPM_BACK_END_OSX_HPP
#include "back-end.hpp"
-#include "helper-osx.hpp"
+#include "key-ref-osx.hpp"
#ifndef NDN_CXX_HAVE_OSX_FRAMEWORKS
#error "This file should not be compiled ..."
diff --git a/src/security/tpm/key-handle-osx.hpp b/src/security/tpm/key-handle-osx.hpp
index 669d7bd..c1b338f 100644
--- a/src/security/tpm/key-handle-osx.hpp
+++ b/src/security/tpm/key-handle-osx.hpp
@@ -23,7 +23,7 @@
#define NDN_SECURITY_TPM_KEY_HANDLE_OSX_HPP
#include "key-handle.hpp"
-#include "helper-osx.hpp"
+#include "key-ref-osx.hpp"
#ifndef NDN_CXX_HAVE_OSX_FRAMEWORKS
#error "This file should not be compiled ..."
diff --git a/src/security/tpm/key-ref-osx.hpp b/src/security/tpm/key-ref-osx.hpp
new file mode 100644
index 0000000..02ed524
--- /dev/null
+++ b/src/security/tpm/key-ref-osx.hpp
@@ -0,0 +1,38 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2013-2017 Regents of the University of California.
+ *
+ * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
+ *
+ * ndn-cxx library is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ *
+ * You should have received copies of the GNU General Public License and GNU Lesser
+ * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
+ */
+
+#ifndef NDN_SECURITY_TPM_KEY_REF_OSX_HPP
+#define NDN_SECURITY_TPM_KEY_REF_OSX_HPP
+
+#include "../../util/cf-releaser-osx.hpp"
+#include <Security/Security.h>
+
+namespace ndn {
+namespace security {
+namespace tpm {
+
+using KeyRefOsx = util::CFReleaser<SecKeyRef>;
+
+} // namespace tpm
+} // namespace security
+} // namespace ndn
+
+#endif // NDN_SECURITY_TPM_KEY_REF_OSX_HPP
diff --git a/src/security/tpm/helper-osx.hpp b/src/util/cf-releaser-osx.hpp
similarity index 87%
rename from src/security/tpm/helper-osx.hpp
rename to src/util/cf-releaser-osx.hpp
index 9271e68..61afeba 100644
--- a/src/security/tpm/helper-osx.hpp
+++ b/src/util/cf-releaser-osx.hpp
@@ -19,19 +19,19 @@
* See AUTHORS.md for complete list of ndn-cxx authors and contributors.
*/
-#ifndef NDN_SECURITY_TPM_HELPER_OSX_HPP
-#define NDN_SECURITY_TPM_HELPER_OSX_HPP
+#ifndef NDN_UTIL_CF_RELEASER_OSX_HPP
+#define NDN_UTIL_CF_RELEASER_OSX_HPP
-#include "../../common.hpp"
+#include "../common.hpp"
#ifndef NDN_CXX_HAVE_OSX_FRAMEWORKS
#error "This file should not be included ..."
#endif
#include <CoreFoundation/CoreFoundation.h>
-#include <Security/Security.h>
namespace ndn {
+namespace util {
/**
* @brief Helper class to wrap CoreFoundation object pointers
@@ -41,6 +41,9 @@
*
* Original implementation by Christopher Hunt and it was borrowed from
* http://www.cocoabuilder.com/archive/cocoa/130776-auto-cfrelease-and.html
+ *
+ * @note The filename cf-releaser-osx.hpp is an intentional violation of code-style rule 2.1.
+ * Having '-osx' suffix is necessary to prevent installation on non-macOS platforms.
*/
template<class T>
class CFReleaser
@@ -109,9 +112,7 @@
return m_typeRef != nullptr;
}
- ///////////////////
- // Miscellaneous //
-
+public: // Miscellaneous
void
retain(const T& typeRef)
{
@@ -143,14 +144,7 @@
T m_typeRef;
};
-namespace security {
-namespace tpm {
-
-using KeyRefOsx = CFReleaser<SecKeyRef>;
-
-} // namespace tpm
-} // namespace security
-
+} // namespace util
} // namespace ndn
-#endif // NDN_SECURITY_TPM_HELPER_OSX_HPP
+#endif // NDN_UTIL_CF_RELEASER_OSX_HPP