1 // Copyright (c) 1994 James Clark
2 // See the file COPYING for copying permission.
3 #pragma ident "%Z%%M% %I% %E% SMI"
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()