1/*
2 * Copyright 2001-2014 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Erik Jaesler (erik@cgsoftware.com)
7 */
8
9
10#include <MessageFilter.h>
11
12
13BMessageFilter::BMessageFilter(uint32 inWhat, filter_hook func)
14	:
15	fFiltersAny(false),
16	fWhat(inWhat),
17	fDelivery(B_ANY_DELIVERY),
18	fSource(B_ANY_SOURCE),
19	fLooper(NULL),
20	fFilterFunction(func)
21{
22}
23
24
25BMessageFilter::BMessageFilter(message_delivery delivery,
26	message_source source, filter_hook func)
27	:
28	fFiltersAny(true),
29	fWhat(0),
30	fDelivery(delivery),
31	fSource(source),
32	fLooper(NULL),
33	fFilterFunction(func)
34{
35}
36
37
38BMessageFilter::BMessageFilter(message_delivery delivery,
39	message_source source, uint32 inWhat, filter_hook func)
40	:
41	fFiltersAny(false),
42	fWhat(inWhat),
43	fDelivery(delivery),
44	fSource(source),
45	fLooper(NULL),
46	fFilterFunction(func)
47{
48}
49
50
51BMessageFilter::BMessageFilter(const BMessageFilter& filter)
52{
53	*this = filter;
54}
55
56
57BMessageFilter::BMessageFilter(const BMessageFilter* filter)
58{
59	*this = *filter;
60}
61
62
63BMessageFilter::~BMessageFilter()
64{
65}
66
67
68BMessageFilter &
69BMessageFilter::operator=(const BMessageFilter& from)
70{
71	fFiltersAny			= from.FiltersAnyCommand();
72	fWhat				= from.Command();
73	fDelivery			= from.MessageDelivery();
74	fSource				= from.MessageSource();
75	fFilterFunction		= from.FilterFunction();
76
77	SetLooper(from.Looper());
78
79	return *this;
80}
81
82
83filter_result
84BMessageFilter::Filter(BMessage* message, BHandler** target)
85{
86	return B_DISPATCH_MESSAGE;
87}
88
89
90message_delivery
91BMessageFilter::MessageDelivery() const
92{
93	return fDelivery;
94}
95
96
97message_source
98BMessageFilter::MessageSource() const
99{
100	return fSource;
101}
102
103
104uint32
105BMessageFilter::Command() const
106{
107	return fWhat;
108}
109
110
111bool
112BMessageFilter::FiltersAnyCommand() const
113{
114	return fFiltersAny;
115}
116
117
118BLooper*
119BMessageFilter::Looper() const
120{
121	return fLooper;
122}
123
124
125void BMessageFilter::_ReservedMessageFilter1() {}
126void BMessageFilter::_ReservedMessageFilter2() {}
127
128
129void
130BMessageFilter::SetLooper(BLooper* owner)
131{
132	fLooper = owner;
133}
134
135
136filter_hook
137BMessageFilter::FilterFunction() const
138{
139	return fFilterFunction;
140}
141