VMware Tanzu GemFire Native C++ Reference  10.1.5
CacheableDate.hpp
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #pragma once
19 
20 #ifndef GEODE_CACHEABLEDATE_H_
21 #define GEODE_CACHEABLEDATE_H_
22 
23 #include <chrono>
24 #include <ctime>
25 #include <string>
26 
27 #include "CacheableKey.hpp"
28 #include "CacheableString.hpp"
29 #include "ExceptionTypes.hpp"
30 #include "internal/geode_globals.hpp"
31 
34 namespace apache {
35 namespace geode {
36 namespace client {
37 
43 class APACHE_GEODE_EXPORT CacheableDate
44  : public internal::DataSerializablePrimitive,
45  public CacheableKey {
46  private:
51  int64_t m_timevalue;
52 
53  public:
54  typedef std::chrono::system_clock clock;
55  typedef std::chrono::time_point<clock> time_point;
56  typedef std::chrono::milliseconds duration;
57 
59  explicit CacheableDate(const time_t value = 0);
60 
64  explicit CacheableDate(const time_point& value);
65 
69  explicit CacheableDate(const duration& value);
70 
71  ~CacheableDate() noexcept override = default;
72 
73  void operator=(const CacheableDate& other) = delete;
74  CacheableDate(const CacheableDate& other) = delete;
75 
76  void toData(DataOutput& output) const override;
77 
78  virtual void fromData(DataInput& input) override;
79 
83  static std::shared_ptr<Serializable> createDeserializable();
84 
85  virtual DSCode getDsCode() const override;
86 
88  virtual size_t objectSize() const override { return sizeof(CacheableDate); }
89 
91  virtual bool operator==(const CacheableKey& other) const override;
92 
94  virtual int64_t milliseconds() const;
95 
102  virtual int32_t hashcode() const override;
103 
104  explicit operator time_t() const { return m_timevalue / 1000; }
105  explicit operator time_point() const {
106  return clock::from_time_t(0) + duration(m_timevalue);
107  }
108  explicit operator duration() const { return duration(m_timevalue); }
109 
113  static std::shared_ptr<CacheableDate> create() {
114  return std::make_shared<CacheableDate>();
115  }
116 
117  static std::shared_ptr<CacheableDate> create(const time_t& value) {
118  return std::make_shared<CacheableDate>(value);
119  }
120 
121  static std::shared_ptr<CacheableDate> create(const time_point& value) {
122  return std::make_shared<CacheableDate>(value);
123  }
124 
125  static std::shared_ptr<CacheableDate> create(const duration& value) {
126  return std::make_shared<CacheableDate>(value);
127  }
128 
129  std::string toString() const override;
130 };
131 
132 template <>
133 inline std::shared_ptr<CacheableKey> CacheableKey::create(
134  CacheableDate::time_point value) {
135  return CacheableDate::create(value);
136 }
137 
138 template <>
139 inline std::shared_ptr<Serializable> Serializable::create(
140  CacheableDate::time_point value) {
141  return CacheableDate::create(value);
142 }
143 
144 } // namespace client
145 } // namespace geode
146 } // namespace apache
147 
148 #endif // GEODE_CACHEABLEDATE_H_
apache::geode::client::CacheableDate::hashcode
virtual int32_t hashcode() const override
Returns a hash code value for this object.
CacheableString.hpp
apache::geode::client::CacheableDate::CacheableDate
CacheableDate(const time_point &value)
Construct from std::chrono::time_point<std::chrono::system_clock>.
CacheableKey.hpp
apache::geode::client::Serializable
This base class is the superclass of all user objects in the cache that can be serialized.
Definition: Serializable.hpp:53
apache::geode::client::CacheableDate::create
static std::shared_ptr< CacheableDate > create()
Factory method for creating an instance of CacheableDate.
Definition: CacheableDate.hpp:113
apache::geode::client::CacheableDate::CacheableDate
CacheableDate(const time_t value=0)
Constructor, used for deserialization.
apache::geode::client::DataOutput
Provide operations for writing primitive data values, byte arrays, strings, Serializable objects to a...
Definition: DataOutput.hpp:48
apache::geode::client::CacheableKey
Represents a cacheable key.
Definition: CacheableKey.hpp:40
apache::geode::client::CacheableKey::create
static std::shared_ptr< CacheableKey > create(_T value)
Factory method that creates the key type that matches the type of value.
apache::geode::client::Serializable::create
static std::shared_ptr< Serializable > create(_T value)
Factory method that creates the Serializable object that matches the type of value.
apache::geode::client::DataInput
Provide operations for reading primitive data values, byte arrays, strings, Serializable objects from...
Definition: DataInput.hpp:59
apache::geode::client::CacheableDate
Implement a date object based on epoch of January 1, 1970 00:00:00 GMT that can serve as a distributa...
Definition: CacheableDate.hpp:45
apache::geode::client::CacheableDate::operator==
virtual bool operator==(const CacheableKey &other) const override
apache::geode::client::CacheableDate::CacheableDate
CacheableDate(const duration &value)
Construct from std::chrono::seconds since POSIX epoch.
apache::geode::client::CacheableDate::milliseconds
virtual int64_t milliseconds() const
apache::geode::client::CacheableDate::toString
std::string toString() const override
Display this object as 'string', which depends on the implementation in the subclasses.

Apache Geode C++ Cache API Documentation