Class: Mongo::Session::ServerSession Private

Inherits:
Object
  • Object
show all
Defined in:
lib/mongo/session/server_session.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.

Since:

  • 2.5.0

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.

Since:

  • 2.5.0

/\-/.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.

Since:

  • 2.5.0

'H*'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeServerSession

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.

Examples:

ServerSession.new

Since:

  • 2.5.0



52
53
54
55
56
# File 'lib/mongo/session/server_session.rb', line 52

def initialize
  set_last_use!
  session_id
  @txn_num = 0
end

Instance Attribute Details

#last_useObject (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.

Since:

  • 2.5.0



39
40
41
# File 'lib/mongo/session/server_session.rb', line 39

def last_use
  @last_use
end

#txn_numObject (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 transactions number.

Since:

  • 2.5.0



44
45
46
# File 'lib/mongo/session/server_session.rb', line 44

def txn_num
  @txn_num
end

Instance Method Details

#inspectString

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.

Examples:

Inspect the session object.

session.inspect

Returns:

  • (String)

    The session inspection.

Since:

  • 2.5.0



103
104
105
# File 'lib/mongo/session/server_session.rb', line 103

def inspect
  "#<Mongo::Session::ServerSession:0x#{object_id} session_id=#{session_id} last_use=#{@last_use}>"
end

#next_txn_numInteger

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 and return the next transaction number.

Examples:

Get the next transaction number.

server_session.next_txn_num

Returns:

  • (Integer)

    The next transaction number.

Since:

  • 2.5.0



91
92
93
# File 'lib/mongo/session/server_session.rb', line 91

def next_txn_num
  @txn_num += 1
end

#session_idBSON::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.

Examples:

Get the session id.

server_session.session_id

Returns:

  • (BSON::Document)

    The session id.

Since:

  • 2.5.0



78
79
80
81
# File 'lib/mongo/session/server_session.rb', line 78

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.

Examples:

Set the last use field to now.

server_session.set_last_use!

Returns:

  • (Time)

    The last time the session was used.

Since:

  • 2.5.0



66
67
68
# File 'lib/mongo/session/server_session.rb', line 66

def set_last_use!
  @last_use = Time.now
end