#ifndef _mDNSPlugin_
#define _mDNSPlugin_ 1
#include "DNSBrowserThread.h"
#include "DNSRegistrationThread.h"
#include "CNSLPlugin.h"
#define kAFPoverTCPServiceType "afpovertcp"
#define kUseMachineName "NSLUseMachineNameForRegistration"
const CFStringRef kLocalSAFE_CFSTR = CFSTR("local");
const CFStringRef kLocalDotSAFE_CFSTR = CFSTR("local.");
class mDNSPlugin : public CNSLPlugin
{
public:
mDNSPlugin ( void );
~mDNSPlugin ( void );
virtual sInt32 InitPlugin ( void );
Boolean IsScopeInReturnList ( const char* scope );
void AddResult ( const char* url );
uInt32 fSignature;
virtual sInt32 SetServerIdleRunLoopRef ( CFRunLoopRef idleRunLoopRef );
virtual void ActivateSelf ( void );
virtual char* CreateNSLTypeFromRecType( char *inRecType, Boolean* needToFree );
virtual CFStringRef CreateRecTypeFromNativeType ( char *inNativeType );
CFStringRef GetComputerNameString ( void ) { return mComputerNameRef; }
CFStringRef GetComputerMacAddressNameString ( void ) { return mComputerMACAddressNameRef; }
protected:
virtual CFStringRef GetBundleIdentifier ( void );
virtual const char* GetProtocolPrefixString ( void ); virtual const char* GetLocalNodeString ( void ); virtual Boolean IsLocalNode ( const char *inNode );
virtual Boolean ReadOnlyPlugin ( void ) { return false; }
virtual Boolean IsClientAuthorizedToCreateRecords ( sCreateRecord *inData );
virtual sInt32 RegisterService ( tRecordReference recordRef, CFDictionaryRef service );
virtual sInt32 DeregisterService ( tRecordReference recordRef, CFDictionaryRef service );
virtual void NewNodeLookup ( void ); virtual Boolean OKToOpenUnPublishedNode ( const char* parentNodeName );
virtual void NewSubNodeLookup ( char* parentNodeName );
virtual void NewServiceLookup ( char* serviceType, CNSLDirNodeRep* nodeDirRep );
virtual sInt32 HandleNetworkTransition ( sHeader *inData );
private:
char* mLocalNodeString;
char* mTopLevelContainerName;
char* mServiceTypeString;
char* mWorkgroupLookupString;
char* mListClassPath;
DNSBrowserThread* mLookupThread;
DNSRegistrationThread* mRegistrationThread;
CFMutableArrayRef mListOfServicesToRegisterManually;
Boolean mStartedNodeLookups;
Boolean mStartedLocalNodeLookups;
Boolean mRegisteredHostedServices;
CFStringRef mComputerNameRef;
CFStringRef mComputerMACAddressNameRef;
};
#endif