You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ec...@apache.org on 2018/08/10 22:50:52 UTC

[geode-native] branch develop updated: GEODE-5567: Replace template parameter of std::atomic with a known trivially-copyable type

This is an automated email from the ASF dual-hosted git repository.

echobravo pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode-native.git


The following commit(s) were added to refs/heads/develop by this push:
     new e5c49fb  GEODE-5567: Replace template parameter of std::atomic with a known trivially-copyable type
e5c49fb is described below

commit e5c49fb00f0cbf207a5a707274293c8439235596
Author: Blake Bender <ek...@hotmail.com>
AuthorDate: Fri Aug 10 22:50:50 2018 +0000

    GEODE-5567: Replace template parameter of std::atomic with a known trivially-copyable type
    
    Co-authored-by: Ivan Godwin <ig...@pivotal.io>
---
 cppcache/include/geode/CacheStatistics.hpp |  8 ++++----
 cppcache/src/CacheStatistics.cpp           |  8 ++++----
 cppcache/src/MapEntry.hpp                  | 30 ++++++++++++++++++------------
 3 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/cppcache/include/geode/CacheStatistics.hpp b/cppcache/include/geode/CacheStatistics.hpp
index 8bd9911..0d8c818 100644
--- a/cppcache/include/geode/CacheStatistics.hpp
+++ b/cppcache/include/geode/CacheStatistics.hpp
@@ -49,8 +49,8 @@ class APACHE_GEODE_EXPORT CacheStatistics {
  public:
   typedef std::chrono::system_clock::time_point time_point;
 
-  CacheStatistics()
-      : m_lastAccessTime(time_point()), m_lastModifiedTime(time_point()){};
+  CacheStatistics() 
+      : m_lastAccessTime(0), m_lastModifiedTime(0) {};
   CacheStatistics(const CacheStatistics&) = delete;
   virtual ~CacheStatistics() = default;
 
@@ -101,8 +101,8 @@ class APACHE_GEODE_EXPORT CacheStatistics {
   virtual void setLastAccessedTime(time_point lat);
   virtual void setLastModifiedTime(time_point lmt);
 
-  std::atomic<time_point> m_lastAccessTime;
-  std::atomic<time_point> m_lastModifiedTime;
+  std::atomic<time_point::duration::rep> m_lastAccessTime;
+  std::atomic<time_point::duration::rep> m_lastModifiedTime;
 
   friend class LocalRegion;
 };
diff --git a/cppcache/src/CacheStatistics.cpp b/cppcache/src/CacheStatistics.cpp
index 03a352a..b6a1dc3 100644
--- a/cppcache/src/CacheStatistics.cpp
+++ b/cppcache/src/CacheStatistics.cpp
@@ -22,19 +22,19 @@ namespace geode {
 namespace client {
 
 void CacheStatistics::setLastModifiedTime(time_point lmt) {
-  m_lastModifiedTime = lmt;
+  m_lastModifiedTime = lmt.time_since_epoch().count();
 }
 
 void CacheStatistics::setLastAccessedTime(time_point lat) {
-  m_lastAccessTime = lat;
+  m_lastAccessTime = lat.time_since_epoch().count();
 }
 
 CacheStatistics::time_point CacheStatistics::getLastModifiedTime() const {
-  return m_lastModifiedTime;
+  return time_point(std::chrono::system_clock::duration(m_lastModifiedTime));
 }
 
 CacheStatistics::time_point CacheStatistics::getLastAccessedTime() const {
-  return m_lastAccessTime;
+  return time_point(std::chrono::system_clock::duration(m_lastAccessTime));
 }
 
 }  // namespace client
diff --git a/cppcache/src/MapEntry.hpp b/cppcache/src/MapEntry.hpp
index c6a7d44..56e4156 100644
--- a/cppcache/src/MapEntry.hpp
+++ b/cppcache/src/MapEntry.hpp
@@ -53,32 +53,38 @@ class APACHE_GEODE_EXPORT ExpEntryProperties {
   typedef std::chrono::system_clock::time_point time_point;
 
   inline ExpEntryProperties(ExpiryTaskManager* expiryTaskManager)
-      : m_lastAccessTime(time_point()),
-        m_lastModifiedTime(time_point()),
-        m_expiryTaskId(-1),
+      :
+      m_lastAccessTime(0),
+      m_lastModifiedTime(0),
+      m_expiryTaskId(-1),
         m_expiryTaskManager(expiryTaskManager) {
     // The reactor always gives +ve id while scheduling.
     // -1 will indicate that an expiry task has not been scheduled
     // for this entry. // TODO confirm
   }
 
-  inline time_point getLastAccessTime() const { return m_lastAccessTime; }
+  inline time_point getLastAccessTime() const {
+    return time_point(std::chrono::system_clock::duration(m_lastAccessTime));
+  }
 
-  inline time_point getLastModifiedTime() const { return m_lastModifiedTime; }
+  inline time_point getLastModifiedTime() const {
+    return time_point(std::chrono::system_clock::duration(m_lastModifiedTime));
+  }
 
   //  moved time initialization outside of constructor to avoid
   // the costly gettimeofday call in MapSegment spinlock
   inline void initStartTime() {
-    m_lastModifiedTime = std::chrono::system_clock::now();
-    m_lastAccessTime = std::chrono::system_clock::now();
+    time_point currentTime = std::chrono::system_clock::now();
+    m_lastAccessTime = currentTime.time_since_epoch().count();
+    m_lastModifiedTime = currentTime.time_since_epoch().count();
   }
 
   inline void updateLastAccessTime(time_point currTime) {
-    m_lastAccessTime = currTime;
+    m_lastAccessTime = currTime.time_since_epoch().count();
   }
 
   inline void updateLastModifiedTime(time_point currTime) {
-    m_lastModifiedTime = currTime;
+    m_lastModifiedTime = currTime.time_since_epoch().count();
   }
 
   inline void setExpiryTaskId(long id) { m_expiryTaskId = id; }
@@ -95,13 +101,13 @@ class APACHE_GEODE_EXPORT ExpEntryProperties {
  protected:
   // this constructor deliberately skips initializing any fields
   inline explicit ExpEntryProperties(bool)
-      : m_lastAccessTime(time_point()), m_lastModifiedTime(time_point()) {}
+      : m_lastAccessTime(0), m_lastModifiedTime(0) {}
 
  private:
   /** last access time in secs, 32bit.. */
-  std::atomic<time_point> m_lastAccessTime;
+  std::atomic<time_point::duration::rep> m_lastAccessTime;
   /** last modified time in secs, 32bit.. */
-  std::atomic<time_point> m_lastModifiedTime;
+  std::atomic<time_point::duration::rep> m_lastModifiedTime;
   /** The expiry task id for this particular entry.. **/
   long m_expiryTaskId;
   ExpiryTaskManager* m_expiryTaskManager;