Revision 546c5100 lib/locking.py

b/lib/locking.py
97 97
  """
98 98
  __slots__ = [
99 99
    "_fd",
100
    "_poller",
101 100
    ]
102 101

  
103
  def __init__(self, poller, fd):
102
  def __init__(self, fd):
104 103
    """Constructor for _SingleNotifyPipeConditionWaiter
105 104

  
106
    @type poller: select.poll
107
    @param poller: Poller object
108 105
    @type fd: int
109 106
    @param fd: File descriptor to wait for
110 107

  
111 108
    """
112 109
    object.__init__(self)
113
    self._poller = poller
114 110
    self._fd = fd
115 111

  
116 112
  def __call__(self, timeout):
......
121 117

  
122 118
    """
123 119
    running_timeout = utils.RunningTimeout(timeout, True)
120
    poller = select.poll()
121
    poller.register(self._fd, select.POLLHUP)
124 122

  
125 123
    while True:
126 124
      remaining_time = running_timeout.Remaining()
......
133 131
        remaining_time *= 1000
134 132

  
135 133
      try:
136
        result = self._poller.poll(remaining_time)
134
        result = poller.poll(remaining_time)
137 135
      except EnvironmentError, err:
138 136
        if err.errno != errno.EINTR:
139 137
          raise
......
222 220
  """
223 221

  
224 222
  __slots__ = [
225
    "_poller",
226 223
    "_read_fd",
227 224
    "_write_fd",
228 225
    "_nwaiters",
......
240 237
    self._notified = False
241 238
    self._read_fd = None
242 239
    self._write_fd = None
243
    self._poller = None
244 240

  
245 241
  def _check_unnotified(self):
246 242
    """Throws an exception if already notified.
......
260 256
    if self._write_fd is not None:
261 257
      os.close(self._write_fd)
262 258
      self._write_fd = None
263
    self._poller = None
264 259

  
265 260
  def wait(self, timeout):
266 261
    """Wait for a notification.
......
274 269

  
275 270
    self._nwaiters += 1
276 271
    try:
277
      if self._poller is None:
272
      if self._read_fd is None:
278 273
        (self._read_fd, self._write_fd) = os.pipe()
279
        self._poller = select.poll()
280
        self._poller.register(self._read_fd, select.POLLHUP)
281 274

  
282
      wait_fn = self._waiter_class(self._poller, self._read_fd)
275
      wait_fn = self._waiter_class(self._read_fd)
283 276
      state = self._release_save()
284 277
      try:
285 278
        # Wait for notification

Also available in: Unified diff