| OLD | NEW |
| (Empty) | |
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. |
| 4 |
| 5 _no_value = object() |
| 6 |
| 7 class Future(object): |
| 8 """Stores a value, error, or delegate to be used later. |
| 9 """ |
| 10 def __init__(self, value=_no_value, error=None, delegate=None): |
| 11 self._value = value |
| 12 self._error = error |
| 13 self._delegate = delegate |
| 14 if (self._value is _no_value and |
| 15 self._error is None and |
| 16 self._delegate is None): |
| 17 raise ValueError('Must have either a value, error, or delegate.') |
| 18 |
| 19 def Get(self): |
| 20 """Gets the stored value, error, or delegate contents. |
| 21 """ |
| 22 if self._value is not _no_value: |
| 23 return self._value |
| 24 if self._error is not None: |
| 25 raise self._error |
| 26 try: |
| 27 self._value = self._delegate.Get() |
| 28 except Exception as self._error: |
| 29 raise |
| 30 return self._value |
| OLD | NEW |