| /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
| /* This Source Code Form is subject to the terms of the Mozilla Public |
| * License, v. 2.0. If a copy of the MPL was not distributed with this |
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| |
| /* |
| ** Class: RCMonitor (ref prmonitor.h) |
| ** |
| ** RCMonitor.h - C++ wrapper around NSPR's monitors |
| */ |
| #if defined(_RCMONITOR_H) |
| #else |
| #define _RCMONITOR_H |
| |
| #include "rcbase.h" |
| #include "rcinrval.h" |
| |
| struct PRMonitor; |
| |
| class PR_IMPLEMENT(RCMonitor): public RCBase |
| { |
| public: |
| RCMonitor(); /* timeout is infinity */ |
| virtual ~RCMonitor(); |
| |
| virtual void Enter(); /* reentrant entry */ |
| virtual void Exit(); |
| |
| virtual void Notify(); /* possibly enable one thread */ |
| virtual void NotifyAll(); /* enable all waiters */ |
| |
| virtual void Wait(); /* applies object's timeout */ |
| |
| virtual void SetTimeout(const RCInterval& timeout); |
| |
| private: |
| PRMonitor *monitor; |
| RCInterval timeout; |
| |
| public: |
| RCInterval GetTimeout() const; /* get the current value */ |
| |
| }; /* RCMonitor */ |
| |
| #endif /* defined(_RCMONITOR_H) */ |
| |
| /* RCMonitor.h */ |