类:Mongo::Server::ConnectionPool::GenerationManager Private

继承:
对象
  • 对象
显示全部
定义于:
构建/ruby-driver-v2.19/lib/ mongo / 服务器/connection_pool/Generation_manager.rb

Overview

此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。

由于:

  • 2.0.0 、 在2.9.0中大部分被重写

实例属性摘要折叠

实例方法摘要折叠

构造函数详情

#initialize (服务器:) = "GenerationManager"

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 GenerationManager 的新实例。

由于:

  • 2.0.0 、 在2.9.0中大部分被重写



25
26
27
28
29
30
31
# File 'build/Ruby-driver-v 2.19 /lib/mongo/server/connection_pool/Generation_manager.rb', 第25行

def 初始化(服务器:)
  @map = 哈希.new { |哈希, key| 哈希[key] = 1 }
  @pipe_fds = 哈希.new { |哈希, key| 哈希[key] = { 1 => IO.管道 } }
  @server = server
   = 互斥锁.new
  @scheduled_for_close = []
end

实例属性详细信息

# server对象(只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0 、 在2.9.0中大部分被重写



33
34
35
# File 'build/Ruby-driver-v 2.19 /lib/mongo/server/connection_pool/Generation_manager.rb', 第33行

def server
  @server
end

实例方法详细信息

# Bump (service_id: nil) ⇒对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0 、 在2.9.0中大部分被重写



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'build/Ruby-driver-v 2.19 /lib/mongo/server/connection_pool/Generation_manager.rb', 第66行

def 碰撞(service_id: nil)
  .同步 do
    close_all_scheduled
    if service_id
      gen = @map[service_id] += 1
      @pipe_fds[service_id] ||= {}
      @pipe_fds[service_id][gen] = IO.管道
    else
      # 未提供服务 ID 时,可能会执行以下两种操作之一:
      # 发生;
      #
      # 1 . 该池不是负载负载均衡器,在这种情况下,我们只需
      # 需要为 nil service_id 增加一代。
      # 2 . 池是负载负载均衡器,在这种情况下,我们需要
      # 递增每个服务的代数。
      #
      # 递增映射中的所有内容可完成这两项任务。
      @map. do |k, v|
        gen = @map[k] += 1
        @pipe_fds[service_id] ||= {}
        @pipe_fds[service_id][gen] = IO.管道
      end
    end
  end
end

#Generation (service_id: nil) ⇒对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0 、 在2.9.0中大部分被重写



35
36
37
38
39
40
41
# File 'build/Ruby-driver-v 2.19 /lib/mongo/server/connection_pool/Generation_manager.rb', 第35行

def 生成(service_id: nil)
  validate_service_id!(service_id)

  .同步 do
    @map[service_id]
  end
end

#Generation_unlocked (service_id: nil) ⇒对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0 、 在2.9.0中大部分被重写



43
44
45
46
47
# File 'build/Ruby-driver-v 2.19 /lib/mongo/server/connection_pool/Generation_manager.rb', 第43行

def Generation_unlocked(service_id: nil)
  validate_service_id!(service_id)

  @map[service_id]
end

# pipeline_fds (service_id: nil) ⇒对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0 、 在2.9.0中大部分被重写



49
50
51
# File 'build/Ruby-driver-v 2.19 /lib/mongo/server/connection_pool/Generation_manager.rb', 第49行

def pipeline_fds(service_id: nil)
  @pipe_fds[service_id][@map[service_id]]
end

# remove_pipe_fds (Generation, service_id: nil) ⇒对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0 、 在2.9.0中大部分被重写



53
54
55
56
57
58
59
60
61
62
63
64
# File 'build/Ruby-driver-v 2.19 /lib/mongo/server/connection_pool/Generation_manager.rb', 第53行

def remove_pipe_fds(生成, service_id: nil)
  validate_service_id!(service_id)

  R, w = @pipe_fds[service_id].删除(生成)
  w.关闭
  # 安排关闭管的读取端。 我们无法关闭它
  # 立即执行,因为我们需要等待任何 Kernel#select 调用
  # 注意管道的一部分已关闭,并检查套接字。 这
  # 所有这些操作都发生在尝试从套接字读取数据并等待
  # 使其再次准备就绪。
  @scheduled_for_close << R
end