diff options
Diffstat (limited to 'src/mongo/db/concurrency/lock_request_list.h')
-rw-r--r-- | src/mongo/db/concurrency/lock_request_list.h | 127 |
1 files changed, 61 insertions, 66 deletions
diff --git a/src/mongo/db/concurrency/lock_request_list.h b/src/mongo/db/concurrency/lock_request_list.h index 066a09dcd98..3501504ac4f 100644 --- a/src/mongo/db/concurrency/lock_request_list.h +++ b/src/mongo/db/concurrency/lock_request_list.h @@ -33,81 +33,76 @@ namespace mongo { - /** - * Simple intrusive list implementation for the lock's granted and conflicting lists. Does not - * own its contents, just uses the intrusive pointers on the LockRequest structure to link them - * together. Therefore requests must outlive this list. - * - * Intentionally implemented as a POD in order to avoid constructor/destructor invocations. - * - * NOTE: This class should not be used for generic purposes and should not be used outside of - * the Lock Manager library. - */ - class LockRequestList { - public: - - void push_front(LockRequest* request) { - // Sanity check that we do not reuse entries without cleaning them up - invariant(request->next == NULL); - invariant(request->prev == NULL); - - if (_front == NULL) { - _front = _back = request; - } - else { - request->next = _front; - - _front->prev = request; - _front = request; - } +/** + * Simple intrusive list implementation for the lock's granted and conflicting lists. Does not + * own its contents, just uses the intrusive pointers on the LockRequest structure to link them + * together. Therefore requests must outlive this list. + * + * Intentionally implemented as a POD in order to avoid constructor/destructor invocations. + * + * NOTE: This class should not be used for generic purposes and should not be used outside of + * the Lock Manager library. + */ +class LockRequestList { +public: + void push_front(LockRequest* request) { + // Sanity check that we do not reuse entries without cleaning them up + invariant(request->next == NULL); + invariant(request->prev == NULL); + + if (_front == NULL) { + _front = _back = request; + } else { + request->next = _front; + + _front->prev = request; + _front = request; } + } - void push_back(LockRequest* request) { - // Sanity check that we do not reuse entries without cleaning them up - invariant(request->next == NULL); - invariant(request->prev == NULL); + void push_back(LockRequest* request) { + // Sanity check that we do not reuse entries without cleaning them up + invariant(request->next == NULL); + invariant(request->prev == NULL); - if (_front == NULL) { - _front = _back = request; - } - else { - request->prev = _back; + if (_front == NULL) { + _front = _back = request; + } else { + request->prev = _back; - _back->next = request; - _back = request; - } + _back->next = request; + _back = request; } + } - void remove(LockRequest* request) { - if (request->prev != NULL) { - request->prev->next = request->next; - } - else { - _front = request->next; - } - - if (request->next != NULL) { - request->next->prev = request->prev; - } - else { - _back = request->prev; - } - - request->prev = NULL; - request->next = NULL; + void remove(LockRequest* request) { + if (request->prev != NULL) { + request->prev->next = request->next; + } else { + _front = request->next; } - void reset() { - _front = _back = NULL; + if (request->next != NULL) { + request->next->prev = request->prev; + } else { + _back = request->prev; } - bool empty() const { - return _front == NULL; - } + request->prev = NULL; + request->next = NULL; + } + + void reset() { + _front = _back = NULL; + } + + bool empty() const { + return _front == NULL; + } - // Pointers to the beginning and the end of the list - LockRequest* _front; - LockRequest* _back; - }; + // Pointers to the beginning and the end of the list + LockRequest* _front; + LockRequest* _back; +}; -} // namespace mongo +} // namespace mongo |