Clase: Mongo::ClusterTime Privado

Hereda:
BSON::Documento
  • Objeto
Mostrar todo
Definido en:
lib/mongo/cluster_time.rb

Overview

Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.

ClusterTime encapsula el almacenamiento y las operaciones de tiempo de clúster.

La operación principal que se realiza en el tiempo del clúster es avanzar: dado otro tiempo del clúster, elija el más reciente de los dos.

Esta clase proporciona métodos de comparación que se utilizan para determinar qué hora de clúster es más nueva y brinda diagnósticos en modo pelusa cuando falta la hora real en un documento de hora de clúster.

Definido bajo Namespace

Modules: Consumidor

Resumen del método de clase colapsar

Resumen del método de instancia colapsar

Detalles del constructor

#initialize(elements = nil) ⇒ ClusterTime

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve una nueva instancia de ClusterTime.



30
31
32
33
34
35
36
# Archivo 'lib/mongo/cluster_time.rb', línea 30

def inicializar(elementos = nulo)
  super

  si Lint.¿habilitado? && !sí mismo['clusterTime']
    propagar ArgumentError, 'Creando un tiempo de clúster sin campo clusterTime'
  end
end

Detalles del método de clase

.[](doc) ⇒ Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Convierte un BSON::Document a ClusterTime.

doc puede ser nil, en cuyo caso se devuelve nil.



97
98
99
100
101
102
103
# Archivo 'lib/mongo/cluster_time.rb', línea 97

def [](doc)
  si doc.nil? || doc.is_a?(Tiempo de clúster)
    doc
  else
    Tiempo de clúster.Nuevo(doc)
  end
end

Detalles del método de instancia

#<(otro) ⇒ Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.



78
79
80
# Archivo 'lib/mongo/cluster_time.rb', línea 78

def <(Otros)
  (sí mismo <=> Otros) == -1
end

#<=(otro) ⇒ objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.



75
76
77
# Archivo 'lib/mongo/cluster_time.rb', línea 75

def <=(Otros)
  (sí mismo <=> Otros) != 1
end

#<=>(otro) ⇒ Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Compara dos instancias de ClusterTime comparando sus marcas de tiempo.



56
57
58
59
60
61
62
63
64
# Archivo 'lib/mongo/cluster_time.rb', línea 56

def <=>(Otros)
  si sí mismo['clusterTime'] && Otros['clusterTime']
    sí mismo['clusterTime'] <=> Otros['clusterTime']
  elsif !sí mismo['clusterTime']
    propagar ArgumentError, "No se pueden comparar los tiempos de clúster cuando al receptor le falta la clave de clusterTime: #{inspeccionar}"
  else Otros['clusterTime']
    propagar ArgumentError, "No se pueden comparar los tiempos de clúster cuando a otro le falta la clave clusterTime: #{otro.inspeccionar}"
  end
end

#==(otra) ⇒ Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Compara dos instancias de ClusterTime comparando sus marcas de tiempo.



83
84
85
86
87
88
89
90
91
# Archivo 'lib/mongo/cluster_time.rb', línea 83

def ==(Otros)
  si sí mismo['clusterTime'] && Otros['clusterTime'] &&
    sí mismo['clusterTime'] == Otros['clusterTime']
  entonces
    true
  else
    false
  end
end

#>(otro) ⇒ Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.



72
73
74
# Archivo 'lib/mongo/cluster_time.rb', línea 72

def >(Otros)
  (sí mismo <=> Otros) == 1
end

#&gt=(otro) ⇒ Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Las versiones antiguas de Ruby no implementan otros operadores lógicos a través de <=>. TODO revisar si estos métodos son necesarios cuando jira.mongodb.org/browse/RUBY-1622 esté implementado.



69
70
71
# Archivo 'lib/mongo/cluster_time.rb', línea 69

def >=(Otros)
  (sí mismo <=> Otros) != -1
end

#avanzar(otro) ⇒ Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Avanza el tiempo del clúster en el receptor al tiempo del clúster en other.

other puede ser nulo o estar detrás del tiempo del clúster en el receptor; en esos casos, el receptor se devuelve sin modificaciones. Si el receptor está adelantado, se devuelve un nuevo objeto ClusterTime.

El valor de retorno es nulo o una instancia de ClusterTime.



45
46
47
48
49
50
51
52
53
# Archivo 'lib/mongo/cluster_time.rb', línea 45

def avanzar(Otros)
  si sí mismo['clusterTime'] && Otros['clusterTime'] &&
    Otros['clusterTime'] > sí mismo['clusterTime']
  entonces
    Tiempo de clúster[Otros]
  else
    sí mismo
  end
end