1/* 2 * Copyright 2005, Ingo Weinhold, bonefish@users.sf.net. 3 * Distributed under the terms of the MIT License. 4 */ 5 6#include <Application.h> 7#include <TokenSpace.h> 8 9#include "AppInfoListMessagingTargetSet.h" 10#include "RosterAppInfo.h" 11 12// constructor 13AppInfoListMessagingTargetSet::AppInfoListMessagingTargetSet( 14 AppInfoList &list, bool skipRegistrar) 15 : fList(list), 16 fIterator(list.It()), 17 fSkipRegistrar(skipRegistrar) 18{ 19 _SkipFilteredOutInfos(); 20} 21 22// destructor 23AppInfoListMessagingTargetSet::~AppInfoListMessagingTargetSet() 24{ 25} 26 27// HasNext 28bool 29AppInfoListMessagingTargetSet::HasNext() const 30{ 31 return fIterator.IsValid(); 32} 33 34// Next 35bool 36AppInfoListMessagingTargetSet::Next(port_id &port, int32 &token) 37{ 38 if (!fIterator.IsValid()) 39 return false; 40 41 port = (*fIterator)->port; 42 token = B_PREFERRED_TOKEN; 43 44 ++fIterator; 45 _SkipFilteredOutInfos(); 46 47 return true; 48} 49 50// Rewind 51void 52AppInfoListMessagingTargetSet::Rewind() 53{ 54 fIterator = fList.It(); 55} 56 57// Filter 58bool 59AppInfoListMessagingTargetSet::Filter(const RosterAppInfo *info) 60{ 61 if (!fSkipRegistrar) 62 return true; 63 64 return (!fSkipRegistrar || info->team != be_app->Team()); 65} 66 67// _SkipFilteredOutInfos 68void 69AppInfoListMessagingTargetSet::_SkipFilteredOutInfos() 70{ 71 while (fIterator.IsValid() && !Filter(*fIterator)) 72 ++fIterator; 73} 74 75