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