xref: /aosp_15_r20/external/mdnsresponder/mDNSWindows/DLLX/DNSSDService.h (revision 48a54d368dc4fa860885eef7b70b6c53499e7c25)
1*48a54d36SAndroid Build Coastguard Worker /* -*- Mode: C; tab-width: 4 -*-
2*48a54d36SAndroid Build Coastguard Worker  *
3*48a54d36SAndroid Build Coastguard Worker  * Copyright (c) 2009 Apple Computer, Inc. All rights reserved.
4*48a54d36SAndroid Build Coastguard Worker  *
5*48a54d36SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
6*48a54d36SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
7*48a54d36SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
8*48a54d36SAndroid Build Coastguard Worker  *
9*48a54d36SAndroid Build Coastguard Worker  *     http://www.apache.org/licenses/LICENSE-2.0
10*48a54d36SAndroid Build Coastguard Worker  *
11*48a54d36SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
12*48a54d36SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
13*48a54d36SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*48a54d36SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
15*48a54d36SAndroid Build Coastguard Worker  * limitations under the License.
16*48a54d36SAndroid Build Coastguard Worker  */
17*48a54d36SAndroid Build Coastguard Worker 
18*48a54d36SAndroid Build Coastguard Worker 
19*48a54d36SAndroid Build Coastguard Worker 
20*48a54d36SAndroid Build Coastguard Worker #pragma once
21*48a54d36SAndroid Build Coastguard Worker 
22*48a54d36SAndroid Build Coastguard Worker #include "resource.h"       // main symbols
23*48a54d36SAndroid Build Coastguard Worker 
24*48a54d36SAndroid Build Coastguard Worker 
25*48a54d36SAndroid Build Coastguard Worker 
26*48a54d36SAndroid Build Coastguard Worker #include "DLLX.h"
27*48a54d36SAndroid Build Coastguard Worker 
28*48a54d36SAndroid Build Coastguard Worker #include "DNSSDEventManager.h"
29*48a54d36SAndroid Build Coastguard Worker 
30*48a54d36SAndroid Build Coastguard Worker #include <CommonServices.h>
31*48a54d36SAndroid Build Coastguard Worker 
32*48a54d36SAndroid Build Coastguard Worker #include <DebugServices.h>
33*48a54d36SAndroid Build Coastguard Worker 
34*48a54d36SAndroid Build Coastguard Worker #include <dns_sd.h>
35*48a54d36SAndroid Build Coastguard Worker 
36*48a54d36SAndroid Build Coastguard Worker #include <map>
37*48a54d36SAndroid Build Coastguard Worker 
38*48a54d36SAndroid Build Coastguard Worker 
39*48a54d36SAndroid Build Coastguard Worker 
40*48a54d36SAndroid Build Coastguard Worker 
41*48a54d36SAndroid Build Coastguard Worker 
42*48a54d36SAndroid Build Coastguard Worker #if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)
43*48a54d36SAndroid Build Coastguard Worker 
44*48a54d36SAndroid Build Coastguard Worker #error "Single-threaded COM objects are not properly supported on Windows CE platform, such as the Windows Mobile platforms that do not include full DCOM support. Define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA to force ATL to support creating single-thread COM object's and allow use of it's single-threaded COM object implementations. The threading model in your rgs file was set to 'Free' as that is the only threading model supported in non DCOM Windows CE platforms."
45*48a54d36SAndroid Build Coastguard Worker 
46*48a54d36SAndroid Build Coastguard Worker #endif
47*48a54d36SAndroid Build Coastguard Worker 
48*48a54d36SAndroid Build Coastguard Worker 
49*48a54d36SAndroid Build Coastguard Worker 
50*48a54d36SAndroid Build Coastguard Worker 
51*48a54d36SAndroid Build Coastguard Worker 
52*48a54d36SAndroid Build Coastguard Worker 
53*48a54d36SAndroid Build Coastguard Worker 
54*48a54d36SAndroid Build Coastguard Worker // CDNSSDService
55*48a54d36SAndroid Build Coastguard Worker 
56*48a54d36SAndroid Build Coastguard Worker 
57*48a54d36SAndroid Build Coastguard Worker 
58*48a54d36SAndroid Build Coastguard Worker class ATL_NO_VTABLE CDNSSDService :
59*48a54d36SAndroid Build Coastguard Worker 
60*48a54d36SAndroid Build Coastguard Worker 	public CComObjectRootEx<CComSingleThreadModel>,
61*48a54d36SAndroid Build Coastguard Worker 
62*48a54d36SAndroid Build Coastguard Worker 	public CComCoClass<CDNSSDService, &CLSID_DNSSDService>,
63*48a54d36SAndroid Build Coastguard Worker 
64*48a54d36SAndroid Build Coastguard Worker 	public IDispatchImpl<IDNSSDService, &IID_IDNSSDService, &LIBID_Bonjour, /*wMajor =*/ 1, /*wMinor =*/ 0>
65*48a54d36SAndroid Build Coastguard Worker 
66*48a54d36SAndroid Build Coastguard Worker {
67*48a54d36SAndroid Build Coastguard Worker 
68*48a54d36SAndroid Build Coastguard Worker public:
69*48a54d36SAndroid Build Coastguard Worker 
70*48a54d36SAndroid Build Coastguard Worker 
71*48a54d36SAndroid Build Coastguard Worker 
72*48a54d36SAndroid Build Coastguard Worker 	typedef CComObjectRootEx<CComSingleThreadModel> Super;
73*48a54d36SAndroid Build Coastguard Worker 
74*48a54d36SAndroid Build Coastguard Worker 
75*48a54d36SAndroid Build Coastguard Worker 
CDNSSDService()76*48a54d36SAndroid Build Coastguard Worker 	CDNSSDService()
77*48a54d36SAndroid Build Coastguard Worker 
78*48a54d36SAndroid Build Coastguard Worker 	:
79*48a54d36SAndroid Build Coastguard Worker 
80*48a54d36SAndroid Build Coastguard Worker 		m_isPrimary( FALSE ),
81*48a54d36SAndroid Build Coastguard Worker 
82*48a54d36SAndroid Build Coastguard Worker 		m_eventManager( NULL ),
83*48a54d36SAndroid Build Coastguard Worker 
84*48a54d36SAndroid Build Coastguard Worker 		m_stopped( FALSE ),
85*48a54d36SAndroid Build Coastguard Worker 
86*48a54d36SAndroid Build Coastguard Worker 		m_primary( NULL ),
87*48a54d36SAndroid Build Coastguard Worker 
88*48a54d36SAndroid Build Coastguard Worker 		m_subord( NULL )
89*48a54d36SAndroid Build Coastguard Worker 
90*48a54d36SAndroid Build Coastguard Worker 	{
91*48a54d36SAndroid Build Coastguard Worker 
92*48a54d36SAndroid Build Coastguard Worker 	}
93*48a54d36SAndroid Build Coastguard Worker 
94*48a54d36SAndroid Build Coastguard Worker 
95*48a54d36SAndroid Build Coastguard Worker 
96*48a54d36SAndroid Build Coastguard Worker DECLARE_REGISTRY_RESOURCEID(IDR_DNSSDSERVICE)
97*48a54d36SAndroid Build Coastguard Worker 
98*48a54d36SAndroid Build Coastguard Worker 
99*48a54d36SAndroid Build Coastguard Worker 
100*48a54d36SAndroid Build Coastguard Worker 
101*48a54d36SAndroid Build Coastguard Worker 
102*48a54d36SAndroid Build Coastguard Worker BEGIN_COM_MAP(CDNSSDService)
103*48a54d36SAndroid Build Coastguard Worker 
104*48a54d36SAndroid Build Coastguard Worker 	COM_INTERFACE_ENTRY(IDNSSDService)
105*48a54d36SAndroid Build Coastguard Worker 
106*48a54d36SAndroid Build Coastguard Worker 	COM_INTERFACE_ENTRY(IDispatch)
107*48a54d36SAndroid Build Coastguard Worker 
108*48a54d36SAndroid Build Coastguard Worker END_COM_MAP()
109*48a54d36SAndroid Build Coastguard Worker 
110*48a54d36SAndroid Build Coastguard Worker 
111*48a54d36SAndroid Build Coastguard Worker 
112*48a54d36SAndroid Build Coastguard Worker 	DECLARE_PROTECT_FINAL_CONSTRUCT()
113*48a54d36SAndroid Build Coastguard Worker 
114*48a54d36SAndroid Build Coastguard Worker 
115*48a54d36SAndroid Build Coastguard Worker 
116*48a54d36SAndroid Build Coastguard Worker 	HRESULT
117*48a54d36SAndroid Build Coastguard Worker 
118*48a54d36SAndroid Build Coastguard Worker 	FinalConstruct();
119*48a54d36SAndroid Build Coastguard Worker 
120*48a54d36SAndroid Build Coastguard Worker 
121*48a54d36SAndroid Build Coastguard Worker 
122*48a54d36SAndroid Build Coastguard Worker 	void
123*48a54d36SAndroid Build Coastguard Worker 
124*48a54d36SAndroid Build Coastguard Worker 	FinalRelease();
125*48a54d36SAndroid Build Coastguard Worker 
126*48a54d36SAndroid Build Coastguard Worker 
127*48a54d36SAndroid Build Coastguard Worker 
128*48a54d36SAndroid Build Coastguard Worker public:
129*48a54d36SAndroid Build Coastguard Worker 
130*48a54d36SAndroid Build Coastguard Worker 
131*48a54d36SAndroid Build Coastguard Worker 
132*48a54d36SAndroid Build Coastguard Worker 	inline DNSServiceRef
133*48a54d36SAndroid Build Coastguard Worker 
GetPrimaryRef()134*48a54d36SAndroid Build Coastguard Worker 	GetPrimaryRef()
135*48a54d36SAndroid Build Coastguard Worker 
136*48a54d36SAndroid Build Coastguard Worker 	{
137*48a54d36SAndroid Build Coastguard Worker 
138*48a54d36SAndroid Build Coastguard Worker 		return m_primary;
139*48a54d36SAndroid Build Coastguard Worker 
140*48a54d36SAndroid Build Coastguard Worker 	}
141*48a54d36SAndroid Build Coastguard Worker 
142*48a54d36SAndroid Build Coastguard Worker 
143*48a54d36SAndroid Build Coastguard Worker 
144*48a54d36SAndroid Build Coastguard Worker 	inline void
145*48a54d36SAndroid Build Coastguard Worker 
SetPrimaryRef(DNSServiceRef primary)146*48a54d36SAndroid Build Coastguard Worker 	SetPrimaryRef( DNSServiceRef primary )
147*48a54d36SAndroid Build Coastguard Worker 
148*48a54d36SAndroid Build Coastguard Worker 	{
149*48a54d36SAndroid Build Coastguard Worker 
150*48a54d36SAndroid Build Coastguard Worker 		m_primary = primary;
151*48a54d36SAndroid Build Coastguard Worker 
152*48a54d36SAndroid Build Coastguard Worker 	}
153*48a54d36SAndroid Build Coastguard Worker 
154*48a54d36SAndroid Build Coastguard Worker 
155*48a54d36SAndroid Build Coastguard Worker 
156*48a54d36SAndroid Build Coastguard Worker 	inline DNSServiceRef
157*48a54d36SAndroid Build Coastguard Worker 
GetSubordRef()158*48a54d36SAndroid Build Coastguard Worker 	GetSubordRef()
159*48a54d36SAndroid Build Coastguard Worker 
160*48a54d36SAndroid Build Coastguard Worker 	{
161*48a54d36SAndroid Build Coastguard Worker 
162*48a54d36SAndroid Build Coastguard Worker 		return m_subord;
163*48a54d36SAndroid Build Coastguard Worker 
164*48a54d36SAndroid Build Coastguard Worker 	}
165*48a54d36SAndroid Build Coastguard Worker 
166*48a54d36SAndroid Build Coastguard Worker 
167*48a54d36SAndroid Build Coastguard Worker 
168*48a54d36SAndroid Build Coastguard Worker 	inline void
169*48a54d36SAndroid Build Coastguard Worker 
SetSubordRef(DNSServiceRef subord)170*48a54d36SAndroid Build Coastguard Worker 	SetSubordRef( DNSServiceRef subord )
171*48a54d36SAndroid Build Coastguard Worker 
172*48a54d36SAndroid Build Coastguard Worker 	{
173*48a54d36SAndroid Build Coastguard Worker 
174*48a54d36SAndroid Build Coastguard Worker 		m_subord = subord;
175*48a54d36SAndroid Build Coastguard Worker 
176*48a54d36SAndroid Build Coastguard Worker 	}
177*48a54d36SAndroid Build Coastguard Worker 
178*48a54d36SAndroid Build Coastguard Worker 
179*48a54d36SAndroid Build Coastguard Worker 
180*48a54d36SAndroid Build Coastguard Worker 	inline CDNSSDEventManager*
181*48a54d36SAndroid Build Coastguard Worker 
GetEventManager()182*48a54d36SAndroid Build Coastguard Worker 	GetEventManager()
183*48a54d36SAndroid Build Coastguard Worker 
184*48a54d36SAndroid Build Coastguard Worker 	{
185*48a54d36SAndroid Build Coastguard Worker 
186*48a54d36SAndroid Build Coastguard Worker 		return m_eventManager;
187*48a54d36SAndroid Build Coastguard Worker 
188*48a54d36SAndroid Build Coastguard Worker 	}
189*48a54d36SAndroid Build Coastguard Worker 
190*48a54d36SAndroid Build Coastguard Worker 
191*48a54d36SAndroid Build Coastguard Worker 
192*48a54d36SAndroid Build Coastguard Worker 	inline void
193*48a54d36SAndroid Build Coastguard Worker 
SetEventManager(IDNSSDEventManager * eventManager)194*48a54d36SAndroid Build Coastguard Worker 	SetEventManager( IDNSSDEventManager * eventManager )
195*48a54d36SAndroid Build Coastguard Worker 
196*48a54d36SAndroid Build Coastguard Worker 	{
197*48a54d36SAndroid Build Coastguard Worker 
198*48a54d36SAndroid Build Coastguard Worker 		if ( m_eventManager )
199*48a54d36SAndroid Build Coastguard Worker 
200*48a54d36SAndroid Build Coastguard Worker 		{
201*48a54d36SAndroid Build Coastguard Worker 
202*48a54d36SAndroid Build Coastguard Worker 			m_eventManager->Release();
203*48a54d36SAndroid Build Coastguard Worker 
204*48a54d36SAndroid Build Coastguard Worker 			m_eventManager = NULL;
205*48a54d36SAndroid Build Coastguard Worker 
206*48a54d36SAndroid Build Coastguard Worker 		}
207*48a54d36SAndroid Build Coastguard Worker 
208*48a54d36SAndroid Build Coastguard Worker 
209*48a54d36SAndroid Build Coastguard Worker 
210*48a54d36SAndroid Build Coastguard Worker 		if ( eventManager )
211*48a54d36SAndroid Build Coastguard Worker 
212*48a54d36SAndroid Build Coastguard Worker 		{
213*48a54d36SAndroid Build Coastguard Worker 
214*48a54d36SAndroid Build Coastguard Worker 			m_eventManager = dynamic_cast< CDNSSDEventManager* >( eventManager );
215*48a54d36SAndroid Build Coastguard Worker 
216*48a54d36SAndroid Build Coastguard Worker 			check( m_eventManager );
217*48a54d36SAndroid Build Coastguard Worker 
218*48a54d36SAndroid Build Coastguard Worker 			m_eventManager->AddRef();
219*48a54d36SAndroid Build Coastguard Worker 
220*48a54d36SAndroid Build Coastguard Worker 		}
221*48a54d36SAndroid Build Coastguard Worker 
222*48a54d36SAndroid Build Coastguard Worker 	}
223*48a54d36SAndroid Build Coastguard Worker 
224*48a54d36SAndroid Build Coastguard Worker 
225*48a54d36SAndroid Build Coastguard Worker 
226*48a54d36SAndroid Build Coastguard Worker 	inline BOOL
227*48a54d36SAndroid Build Coastguard Worker 
Stopped()228*48a54d36SAndroid Build Coastguard Worker 	Stopped()
229*48a54d36SAndroid Build Coastguard Worker 
230*48a54d36SAndroid Build Coastguard Worker 	{
231*48a54d36SAndroid Build Coastguard Worker 
232*48a54d36SAndroid Build Coastguard Worker 		return m_stopped;
233*48a54d36SAndroid Build Coastguard Worker 
234*48a54d36SAndroid Build Coastguard Worker 	}
235*48a54d36SAndroid Build Coastguard Worker 
236*48a54d36SAndroid Build Coastguard Worker 
237*48a54d36SAndroid Build Coastguard Worker 
238*48a54d36SAndroid Build Coastguard Worker private:
239*48a54d36SAndroid Build Coastguard Worker 
240*48a54d36SAndroid Build Coastguard Worker 
241*48a54d36SAndroid Build Coastguard Worker 
242*48a54d36SAndroid Build Coastguard Worker 	static void DNSSD_API
243*48a54d36SAndroid Build Coastguard Worker 	DomainEnumReply
244*48a54d36SAndroid Build Coastguard Worker 		(
245*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                       sdRef,
246*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                     flags,
247*48a54d36SAndroid Build Coastguard Worker 		uint32_t                            ifIndex,
248*48a54d36SAndroid Build Coastguard Worker 		DNSServiceErrorType                 errorCode,
249*48a54d36SAndroid Build Coastguard Worker 		const char                          *replyDomain,
250*48a54d36SAndroid Build Coastguard Worker 		void                                *context
251*48a54d36SAndroid Build Coastguard Worker 		);
252*48a54d36SAndroid Build Coastguard Worker 
253*48a54d36SAndroid Build Coastguard Worker 
254*48a54d36SAndroid Build Coastguard Worker 
255*48a54d36SAndroid Build Coastguard Worker 	static void DNSSD_API
256*48a54d36SAndroid Build Coastguard Worker 	BrowseReply
257*48a54d36SAndroid Build Coastguard Worker 		(
258*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                       sdRef,
259*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                     flags,
260*48a54d36SAndroid Build Coastguard Worker 		uint32_t                            interfaceIndex,
261*48a54d36SAndroid Build Coastguard Worker 		DNSServiceErrorType                 errorCode,
262*48a54d36SAndroid Build Coastguard Worker 		const char                          *serviceName,
263*48a54d36SAndroid Build Coastguard Worker 		const char                          *regtype,
264*48a54d36SAndroid Build Coastguard Worker 		const char                          *replyDomain,
265*48a54d36SAndroid Build Coastguard Worker 		void                                *context
266*48a54d36SAndroid Build Coastguard Worker 		);
267*48a54d36SAndroid Build Coastguard Worker 
268*48a54d36SAndroid Build Coastguard Worker 
269*48a54d36SAndroid Build Coastguard Worker 
270*48a54d36SAndroid Build Coastguard Worker 	static void DNSSD_API
271*48a54d36SAndroid Build Coastguard Worker 
272*48a54d36SAndroid Build Coastguard Worker 	ResolveReply
273*48a54d36SAndroid Build Coastguard Worker 
274*48a54d36SAndroid Build Coastguard Worker 		(
275*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                       sdRef,
276*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                     flags,
277*48a54d36SAndroid Build Coastguard Worker 		uint32_t                            interfaceIndex,
278*48a54d36SAndroid Build Coastguard Worker 		DNSServiceErrorType                 errorCode,
279*48a54d36SAndroid Build Coastguard Worker 		const char                          *fullname,
280*48a54d36SAndroid Build Coastguard Worker 		const char                          *hosttarget,
281*48a54d36SAndroid Build Coastguard Worker 		uint16_t                            port,
282*48a54d36SAndroid Build Coastguard Worker 		uint16_t                            txtLen,
283*48a54d36SAndroid Build Coastguard Worker 		const unsigned char                 *txtRecord,
284*48a54d36SAndroid Build Coastguard Worker 		void                                *context
285*48a54d36SAndroid Build Coastguard Worker 
286*48a54d36SAndroid Build Coastguard Worker 		);
287*48a54d36SAndroid Build Coastguard Worker 
288*48a54d36SAndroid Build Coastguard Worker 
289*48a54d36SAndroid Build Coastguard Worker 
290*48a54d36SAndroid Build Coastguard Worker 	static void DNSSD_API
291*48a54d36SAndroid Build Coastguard Worker 	RegisterReply
292*48a54d36SAndroid Build Coastguard Worker 		(
293*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                       sdRef,
294*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                     flags,
295*48a54d36SAndroid Build Coastguard Worker 		DNSServiceErrorType                 errorCode,
296*48a54d36SAndroid Build Coastguard Worker 		const char                          *name,
297*48a54d36SAndroid Build Coastguard Worker 		const char                          *regtype,
298*48a54d36SAndroid Build Coastguard Worker 		const char                          *domain,
299*48a54d36SAndroid Build Coastguard Worker 		void                                *context
300*48a54d36SAndroid Build Coastguard Worker 		);
301*48a54d36SAndroid Build Coastguard Worker 
302*48a54d36SAndroid Build Coastguard Worker 
303*48a54d36SAndroid Build Coastguard Worker 
304*48a54d36SAndroid Build Coastguard Worker 	static void DNSSD_API
305*48a54d36SAndroid Build Coastguard Worker 	QueryRecordReply
306*48a54d36SAndroid Build Coastguard Worker 		(
307*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                       sdRef,
308*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                     flags,
309*48a54d36SAndroid Build Coastguard Worker 		uint32_t                            interfaceIndex,
310*48a54d36SAndroid Build Coastguard Worker 		DNSServiceErrorType                 errorCode,
311*48a54d36SAndroid Build Coastguard Worker 		const char                          *fullname,
312*48a54d36SAndroid Build Coastguard Worker 		uint16_t                            rrtype,
313*48a54d36SAndroid Build Coastguard Worker 		uint16_t                            rrclass,
314*48a54d36SAndroid Build Coastguard Worker 		uint16_t                            rdlen,
315*48a54d36SAndroid Build Coastguard Worker 		const void                          *rdata,
316*48a54d36SAndroid Build Coastguard Worker 		uint32_t                            ttl,
317*48a54d36SAndroid Build Coastguard Worker 		void                                *context
318*48a54d36SAndroid Build Coastguard Worker 		);
319*48a54d36SAndroid Build Coastguard Worker 
320*48a54d36SAndroid Build Coastguard Worker 
321*48a54d36SAndroid Build Coastguard Worker 
322*48a54d36SAndroid Build Coastguard Worker 	static void DNSSD_API
323*48a54d36SAndroid Build Coastguard Worker     GetAddrInfoReply
324*48a54d36SAndroid Build Coastguard Worker 		(
325*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                    sdRef,
326*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                  flags,
327*48a54d36SAndroid Build Coastguard Worker 		uint32_t                         interfaceIndex,
328*48a54d36SAndroid Build Coastguard Worker 		DNSServiceErrorType              errorCode,
329*48a54d36SAndroid Build Coastguard Worker 		const char                       *hostname,
330*48a54d36SAndroid Build Coastguard Worker 		const struct sockaddr            *address,
331*48a54d36SAndroid Build Coastguard Worker 		uint32_t                         ttl,
332*48a54d36SAndroid Build Coastguard Worker 		void                             *context
333*48a54d36SAndroid Build Coastguard Worker 		);
334*48a54d36SAndroid Build Coastguard Worker 
335*48a54d36SAndroid Build Coastguard Worker 
336*48a54d36SAndroid Build Coastguard Worker 
337*48a54d36SAndroid Build Coastguard Worker 	static void DNSSD_API
338*48a54d36SAndroid Build Coastguard Worker 	NATPortMappingReply
339*48a54d36SAndroid Build Coastguard Worker 		(
340*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                    sdRef,
341*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                  flags,
342*48a54d36SAndroid Build Coastguard Worker 		uint32_t                         interfaceIndex,
343*48a54d36SAndroid Build Coastguard Worker 		DNSServiceErrorType              errorCode,
344*48a54d36SAndroid Build Coastguard Worker 		uint32_t                         externalAddress,   /* four byte IPv4 address in network byte order */
345*48a54d36SAndroid Build Coastguard Worker 		DNSServiceProtocol               protocol,
346*48a54d36SAndroid Build Coastguard Worker 		uint16_t                         internalPort,
347*48a54d36SAndroid Build Coastguard Worker 		uint16_t                         externalPort,      /* may be different than the requested port     */
348*48a54d36SAndroid Build Coastguard Worker 		uint32_t                         ttl,               /* may be different than the requested ttl      */
349*48a54d36SAndroid Build Coastguard Worker 		void                             *context
350*48a54d36SAndroid Build Coastguard Worker 		);
351*48a54d36SAndroid Build Coastguard Worker 
352*48a54d36SAndroid Build Coastguard Worker 
353*48a54d36SAndroid Build Coastguard Worker 
354*48a54d36SAndroid Build Coastguard Worker 	static void DNSSD_API
355*48a54d36SAndroid Build Coastguard Worker 	RegisterRecordReply
356*48a54d36SAndroid Build Coastguard Worker 		(
357*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                       sdRef,
358*48a54d36SAndroid Build Coastguard Worker 		DNSRecordRef                        RecordRef,
359*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                     flags,
360*48a54d36SAndroid Build Coastguard Worker 		DNSServiceErrorType                 errorCode,
361*48a54d36SAndroid Build Coastguard Worker 		void                                *context
362*48a54d36SAndroid Build Coastguard Worker 		);
363*48a54d36SAndroid Build Coastguard Worker 
364*48a54d36SAndroid Build Coastguard Worker 
365*48a54d36SAndroid Build Coastguard Worker 
366*48a54d36SAndroid Build Coastguard Worker 	inline BOOL
367*48a54d36SAndroid Build Coastguard Worker 
368*48a54d36SAndroid Build Coastguard Worker 	ShouldHandleReply( DNSServiceErrorType errorCode, CDNSSDEventManager *& eventManager );
369*48a54d36SAndroid Build Coastguard Worker 
370*48a54d36SAndroid Build Coastguard Worker 
371*48a54d36SAndroid Build Coastguard Worker 
372*48a54d36SAndroid Build Coastguard Worker 	static LRESULT CALLBACK
373*48a54d36SAndroid Build Coastguard Worker 
374*48a54d36SAndroid Build Coastguard Worker 	WndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );
375*48a54d36SAndroid Build Coastguard Worker 
376*48a54d36SAndroid Build Coastguard Worker 
377*48a54d36SAndroid Build Coastguard Worker 
378*48a54d36SAndroid Build Coastguard Worker 	typedef std::map< SOCKET, CDNSSDService* > SocketMap;
379*48a54d36SAndroid Build Coastguard Worker 
380*48a54d36SAndroid Build Coastguard Worker 
381*48a54d36SAndroid Build Coastguard Worker 
382*48a54d36SAndroid Build Coastguard Worker 	static BOOL				m_registeredWindowClass;
383*48a54d36SAndroid Build Coastguard Worker 
384*48a54d36SAndroid Build Coastguard Worker 	static HWND				m_hiddenWindow;
385*48a54d36SAndroid Build Coastguard Worker 
386*48a54d36SAndroid Build Coastguard Worker 	static SocketMap		m_socketMap;
387*48a54d36SAndroid Build Coastguard Worker 
388*48a54d36SAndroid Build Coastguard Worker 	CDNSSDEventManager	*	m_eventManager;
389*48a54d36SAndroid Build Coastguard Worker 
390*48a54d36SAndroid Build Coastguard Worker 	BOOL					m_stopped;
391*48a54d36SAndroid Build Coastguard Worker 
392*48a54d36SAndroid Build Coastguard Worker 	BOOL					m_isPrimary;
393*48a54d36SAndroid Build Coastguard Worker 
394*48a54d36SAndroid Build Coastguard Worker 	DNSServiceRef			m_primary;
395*48a54d36SAndroid Build Coastguard Worker 
396*48a54d36SAndroid Build Coastguard Worker 	DNSServiceRef			m_subord;
397*48a54d36SAndroid Build Coastguard Worker 
398*48a54d36SAndroid Build Coastguard Worker public:
399*48a54d36SAndroid Build Coastguard Worker 
400*48a54d36SAndroid Build Coastguard Worker 	STDMETHOD(EnumerateDomains)(DNSSDFlags flags, ULONG ifIndex, IDNSSDEventManager *eventManager, IDNSSDService **service);
401*48a54d36SAndroid Build Coastguard Worker 
402*48a54d36SAndroid Build Coastguard Worker 	STDMETHOD(Browse)(DNSSDFlags flags, ULONG interfaceIndex, BSTR regtype, BSTR domain, IDNSSDEventManager* eventManager, IDNSSDService** sdref);
403*48a54d36SAndroid Build Coastguard Worker 
404*48a54d36SAndroid Build Coastguard Worker 	STDMETHOD(Resolve)(DNSSDFlags flags, ULONG ifIndex, BSTR serviceName, BSTR regType, BSTR domain, IDNSSDEventManager* eventManager, IDNSSDService** service);
405*48a54d36SAndroid Build Coastguard Worker 
406*48a54d36SAndroid Build Coastguard Worker 	STDMETHOD(Register)(DNSSDFlags flags, ULONG ifIndex, BSTR name, BSTR regType, BSTR domain, BSTR host, USHORT port, ITXTRecord *record, IDNSSDEventManager *eventManager, IDNSSDService **service);
407*48a54d36SAndroid Build Coastguard Worker 
408*48a54d36SAndroid Build Coastguard Worker 	STDMETHOD(QueryRecord)(DNSSDFlags flags, ULONG ifIndex, BSTR fullname, DNSSDRRType rrtype, DNSSDRRClass rrclass, IDNSSDEventManager *eventManager, IDNSSDService **service);
409*48a54d36SAndroid Build Coastguard Worker 
410*48a54d36SAndroid Build Coastguard Worker 	STDMETHOD(RegisterRecord)(DNSSDFlags flags, ULONG ifIndex, BSTR fullname, DNSSDRRType rrtype, DNSSDRRClass rrclass, VARIANT rdata, ULONG ttl, IDNSSDEventManager* eventManager, IDNSSDRecord** record);
411*48a54d36SAndroid Build Coastguard Worker 
412*48a54d36SAndroid Build Coastguard Worker 	STDMETHOD(AddRecord)(DNSSDFlags flags, DNSSDRRType rrtype, VARIANT rdata, ULONG ttl, IDNSSDRecord ** record);
413*48a54d36SAndroid Build Coastguard Worker 
414*48a54d36SAndroid Build Coastguard Worker 	STDMETHOD(ReconfirmRecord)(DNSSDFlags flags, ULONG ifIndex, BSTR fullname, DNSSDRRType rrtype, DNSSDRRClass rrclass, VARIANT rdata);
415*48a54d36SAndroid Build Coastguard Worker 
416*48a54d36SAndroid Build Coastguard Worker 	STDMETHOD(GetProperty)(BSTR prop, VARIANT * value);
417*48a54d36SAndroid Build Coastguard Worker 
418*48a54d36SAndroid Build Coastguard Worker 	STDMETHOD(GetAddrInfo)(DNSSDFlags flags, ULONG ifIndex, DNSSDAddressFamily addressFamily, BSTR hostname, IDNSSDEventManager *eventManager, IDNSSDService **service);
419*48a54d36SAndroid Build Coastguard Worker 
420*48a54d36SAndroid Build Coastguard Worker 	STDMETHOD(NATPortMappingCreate)(DNSSDFlags flags, ULONG ifIndex, DNSSDAddressFamily addressFamily, DNSSDProtocol protocol, USHORT internalPort, USHORT externalPort, ULONG ttl, IDNSSDEventManager *eventManager, IDNSSDService **service);
421*48a54d36SAndroid Build Coastguard Worker 
422*48a54d36SAndroid Build Coastguard Worker 	STDMETHOD(Stop)(void);
423*48a54d36SAndroid Build Coastguard Worker 
424*48a54d36SAndroid Build Coastguard Worker };
425*48a54d36SAndroid Build Coastguard Worker 
426*48a54d36SAndroid Build Coastguard Worker 
427*48a54d36SAndroid Build Coastguard Worker 
428*48a54d36SAndroid Build Coastguard Worker OBJECT_ENTRY_AUTO(__uuidof(DNSSDService), CDNSSDService)
429*48a54d36SAndroid Build Coastguard Worker 
430