Class: Mongo::Session::ServerSession Private
- Inherits:
-
Object
- Object
- Mongo::Session::ServerSession
- 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 Summary collapse
- 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
-
#last_use ⇒ Object
readonly
private
The last time the server session was used.
-
#txn_num ⇒ Object
readonly
private
The current transaction number.
Instance Method Summary collapse
-
#initialize ⇒ ServerSession
constructor
private
Initialize a ServerSession.
-
#inspect ⇒ String
private
Get a formatted string for use in inspection.
-
#next_txn_num ⇒ Integer
private
Increment the current transaction number and return the new value.
-
#session_id ⇒ BSON::Document
private
The session id of this server session.
-
#set_last_use! ⇒ Time
private
Update the last_use attribute of the server session to now.
Methods included from Dirtyable
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 (readonly)
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 (readonly)
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 |