ServerSession — Documentation by YARD 0.9.37 (original) (raw)

Class: Mongo::Session::ServerSessionPrivate

Inherits:

Object

Includes:

Dirtyable

Defined in:

lib/mongo/session/server_session.rb,
lib/mongo/session/server_session/dirtyable.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.

An object representing the server-side session.

Defined Under Namespace

Modules: Dirtyable

Constant Summarycollapse

DASH_REGEX =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Regex for removing dashes from the UUID string.

/-/.freeze

UUID_PACK =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Pack directive for the UUID.

'H*'.freeze

Instance Attribute Summary collapse

Instance Method Summarycollapse

Methods included from Dirtyable

#dirty!, #dirty?

Constructor Details

#initialize ⇒ ServerSession

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.

Initialize a ServerSession.

72 73 74 75 76 # File 'lib/mongo/session/server_session.rb', line 72 def initialize set_last_use! session_id @txn_num = 0 end

Instance Attribute Details

#last_use ⇒ 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.

The last time the server session was used.

45 46 47 # File 'lib/mongo/session/server_session.rb', line 45 def last_use @last_use end

#txn_num ⇒ 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.

The current transaction number.

When a transaction is active, all operations in that transaction use the same transaction number. If the entire transaction is restarted (for example, by Session#with_transaction, in which case it would also invoke the block provided to it again), each transaction attempt has its own transaction number.

Transaction number is also used outside of transactions for retryable writes. In this case, each write operation has its own transaction number, but retries of a write operation use the same transaction number as the first write (which is how the server knows that subsequent writes are retries and should be ignored if the first write succeeded on the server but was not read by the client, for example).

64 65 66 # File 'lib/mongo/session/server_session.rb', line 64 def txn_num @txn_num end

Instance Method Details

#inspect ⇒ String

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.

Get a formatted string for use in inspection.

120 121 122 # File 'lib/mongo/session/server_session.rb', line 120 def inspect "#<Mongo::Session::ServerSession:0x#{object_id} session_id=#{session_id} last_use=#{@last_use}>" end

#next_txn_num ⇒ Integer

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.

Increment the current transaction number and return the new value.

108 109 110 # File 'lib/mongo/session/server_session.rb', line 108 def next_txn_num @txn_num += 1 end

#session_id ⇒ BSON::Document

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.

The session id of this server session.

| 98 99 100 101 | # File 'lib/mongo/session/server_session.rb', line 98 def session_id @session_id ||= (bytes = [SecureRandom.uuid.gsub(DASH_REGEX, '')].pack(UUID_PACK) BSON::Document.new(id: BSON::Binary.new(bytes, :uuid))) end | | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

#set_last_use! ⇒ Time

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.

Update the last_use attribute of the server session to now.

86 87 88 # File 'lib/mongo/session/server_session.rb', line 86 def set_last_use! @last_use = Time.now end