Class: Mongo::ClusterTime Private
- Inherits:
-
BSON::Document
- Object
- BSON::Document
- Mongo::ClusterTime
- Defined in:
- lib/mongo/cluster_time.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
ClusterTime encapsulates cluster time storage and operations.
The primary operation performed on the cluster time is advancing it: given another cluster time, pick the newer of the two.
This class provides comparison methods that are used to figure out which cluster time is newer, and provides diagnostics in lint mode when the actual time is missing from a cluster time document.
Defined Under Namespace
Modules: Consumer
Class Method Summary collapse
-
.[](doc) ⇒ Object
private
Converts a BSON::Document to a ClusterTime.
Instance Method Summary collapse
- #<(other) ⇒ Object private
- #<=(other) ⇒ Object private
-
#<=>(other) ⇒ Object
private
Compares two ClusterTime instances by comparing their timestamps.
-
#==(other) ⇒ Object
private
Compares two ClusterTime instances by comparing their timestamps.
- #>(other) ⇒ Object private
-
#>=(other) ⇒ Object
private
Older Rubies do not implement other logical operators through <=>.
-
#advance(other) ⇒ Object
private
Advances the cluster time in the receiver to the cluster time in
other
. -
#initialize(elements = nil) ⇒ ClusterTime
constructor
private
A new instance of ClusterTime.
Constructor Details
#initialize(elements = nil) ⇒ ClusterTime
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of ClusterTime.
30 31 32 33 34 35 36 |
# File 'lib/mongo/cluster_time.rb', line 30 def initialize(elements = nil) super if Lint.enabled? && !self['clusterTime'] raise ArgumentError, 'Creating a cluster time without clusterTime field' end end |
Class Method Details
.[](doc) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Converts a BSON::Document to a ClusterTime.
doc
can be nil, in which case nil is returned.
97 98 99 100 101 102 103 |
# File 'lib/mongo/cluster_time.rb', line 97 def [](doc) if doc.nil? || doc.is_a?(ClusterTime) doc else ClusterTime.new(doc) end end |
Instance Method Details
#<(other) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
78 79 80 |
# File 'lib/mongo/cluster_time.rb', line 78 def <(other) (self <=> other) == -1 end |
#<=(other) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
75 76 77 |
# File 'lib/mongo/cluster_time.rb', line 75 def <=(other) (self <=> other) != 1 end |
#<=>(other) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Compares two ClusterTime instances by comparing their timestamps.
56 57 58 59 60 61 62 63 64 |
# File 'lib/mongo/cluster_time.rb', line 56 def <=>(other) if self['clusterTime'] && other['clusterTime'] self['clusterTime'] <=> other['clusterTime'] elsif !self['clusterTime'] raise ArgumentError, "Cannot compare cluster times when receiver is missing clusterTime key: #{inspect}" else other['clusterTime'] raise ArgumentError, "Cannot compare cluster times when other is missing clusterTime key: #{other.inspect}" end end |
#==(other) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Compares two ClusterTime instances by comparing their timestamps.
83 84 85 86 87 88 89 90 91 |
# File 'lib/mongo/cluster_time.rb', line 83 def ==(other) if self['clusterTime'] && other['clusterTime'] && self['clusterTime'] == other['clusterTime'] then true else false end end |
#>(other) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
72 73 74 |
# File 'lib/mongo/cluster_time.rb', line 72 def >(other) (self <=> other) == 1 end |
#>=(other) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Older Rubies do not implement other logical operators through <=>. TODO revise whether these methods are needed when jira.mongodb.org/browse/RUBY-1622 is implemented.
69 70 71 |
# File 'lib/mongo/cluster_time.rb', line 69 def >=(other) (self <=> other) != -1 end |
#advance(other) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Advances the cluster time in the receiver to the cluster time in other
.
other
can be nil or be behind the cluster time in the receiver; in these cases the receiver is returned unmodified. If receiver is advanced, a new ClusterTime object is returned.
Return value is nil or a ClusterTime instance.
45 46 47 48 49 50 51 52 53 |
# File 'lib/mongo/cluster_time.rb', line 45 def advance(other) if self['clusterTime'] && other['clusterTime'] && other['clusterTime'] > self['clusterTime'] then ClusterTime[other] else self end end |