1 /* $XConsortium: DescriptorManager.C /main/1 1996/07/29 16:48:58 cde-hp $ */
2 // Copyright (c) 1994 James Clark
3 // See the file COPYING for copying permission.
6 #include "DescriptorManager.h"
10 namespace SP_NAMESPACE {
13 DescriptorUser::DescriptorUser(DescriptorManager *manager)
17 manager_->addUser(this);
20 DescriptorUser::~DescriptorUser()
23 manager_->removeUser(this);
26 void DescriptorUser::managerDeleted()
31 Boolean DescriptorUser::suspend()
36 void DescriptorUser::acquireD()
42 void DescriptorUser::releaseD()
48 DescriptorManager::DescriptorManager(int maxD)
49 : maxD_(maxD), usedD_(0)
53 DescriptorManager::~DescriptorManager()
55 for (ListIter<DescriptorUser *> iter(users_);
58 iter.cur()->managerDeleted();
61 void DescriptorManager::addUser(DescriptorUser *p)
66 void DescriptorManager::removeUser(DescriptorUser *p)
71 void DescriptorManager::acquireD()
73 if (usedD_ >= maxD_) {
74 for (ListIter<DescriptorUser *> iter(users_);
77 if (iter.cur()->suspend())
84 void DescriptorManager::releaseD()