Cleanup. Added BTokenSpace::GetList(), though it's probably not needed after all

(we can still remove it later if needed).
Added B_SERVER_TOKEN type.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13451 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2005-07-05 17:22:35 +00:00
parent 2e6a5805ba
commit ef571f678c
2 changed files with 50 additions and 38 deletions
+25 -5
View File
@@ -4,6 +4,7 @@
*
* Authors:
* Erik Jaesler ([email protected])
* Axel Dörfler, [email protected]
*/
@@ -35,7 +36,7 @@ int32
BTokenSpace::NewToken(int16 type, void* object,
new_token_callback callback)
{
BAutolock Lock(fLocker);
BAutolock locker(this);
TTokenInfo tokenInfo = { type, object };
int32 token;
@@ -60,7 +61,7 @@ BTokenSpace::NewToken(int16 type, void* object,
bool
BTokenSpace::RemoveToken(int32 token, remove_token_callback callback)
{
BAutolock Lock(fLocker);
BAutolock locker(this);
TTokenMap::iterator iter = fTokenMap.find(token);
if (iter == fTokenMap.end())
@@ -83,7 +84,7 @@ BTokenSpace::RemoveToken(int32 token, remove_token_callback callback)
bool
BTokenSpace::CheckToken(int32 token, int16 type) const
{
BAutolock Locker(const_cast<BLocker&>(fLocker));
BAutolock locker(const_cast<BTokenSpace&>(*this));
TTokenMap::const_iterator iter = fTokenMap.find(token);
if (iter != fTokenMap.end() && iter->second.type == type)
@@ -97,7 +98,7 @@ status_t
BTokenSpace::GetToken(int32 token, int16 type, void** object,
get_token_callback callback) const
{
BAutolock Locker(const_cast<BLocker&>(fLocker));
BAutolock locker(const_cast<BTokenSpace&>(*this));
TTokenMap::const_iterator iter = fTokenMap.find(token);
if (iter == fTokenMap.end() || iter->second.type != type) {
@@ -115,5 +116,24 @@ BTokenSpace::GetToken(int32 token, int16 type, void** object,
return B_OK;
}
} // namespace BPrivate
status_t
BTokenSpace::GetList(int32*& tokens, int32& count) const
{
BAutolock locker(const_cast<BTokenSpace&>(*this));
count = fTokenMap.size();
tokens = (int32*)malloc(count * sizeof(int32));
if (tokens == NULL)
return B_NO_MEMORY;
TTokenMap::const_iterator iterator = fTokenMap.begin();
for (int32 i = 0; iterator != fTokenMap.end(); i++) {
tokens[i] = iterator->first;
iterator++;
}
return B_OK;
}
} // namespace BPrivate