xref: /haiku/src/servers/registrar/AppInfoListMessagingTargetSet.h (revision 9216fc01782e67a039b918399d45c8c0c9199d71)
1 /*
2  * Copyright 2005, Ingo Weinhold, bonefish@users.sf.net.
3  * Distributed under the terms of the MIT License.
4  *
5  * Implements the MessagingTargetSet interface for AppInfoLists, so that
6  * no other representation (array/list) is needed to feed them into the
7  * MessageDeliverer.
8  */
9 #ifndef APP_INFO_LIST_MESSAGING_TARGET_SET_H
10 #define APP_INFO_LIST_MESSAGING_TARGET_SET_H
11 
12 #include "AppInfoList.h"
13 #include "MessageDeliverer.h"
14 
15 struct RosterAppInfo;
16 
17 class AppInfoListMessagingTargetSet : public MessagingTargetSet {
18 public:
19 	AppInfoListMessagingTargetSet(AppInfoList &list,
20 		bool skipRegistrar = true);
21 	virtual ~AppInfoListMessagingTargetSet();
22 
23 	virtual bool HasNext() const;
24 	virtual bool Next(port_id &port, int32 &token);
25 	virtual void Rewind();
26 
27 	virtual bool Filter(const RosterAppInfo *info);
28 
29 private:
30 	void _SkipFilteredOutInfos();
31 
32 	AppInfoList				&fList;
33 	AppInfoList::Iterator	fIterator;
34 	bool					fSkipRegistrar;
35 };
36 
37 #endif	// APP_INFO_LIST_MESSAGING_TARGET_SET_H
38