/* FILE: NSNetServices.h * * Project Tryst * Class NSNetServices * Creator Chris B. Vetter * Maintainer Chris B. Vetter * Creation Date Mon Sep 11 14:46:24 CEST 2006 * * Copyright (c) 2006 * * Tryst is free software under the terms of a dual BSD/LGPL license. * For a full copyright description, see the COPYRIGHT file. * ***************************************************************************/ #ifndef _NSNETSERVICES_H_ #define _NSNETSERVICES_H_ 1 /***************************************************************************/ // // Include // #import // // Define // // // Typedef // typedef enum { /** * * * NSNetServicesUnknownError
* An unknown error occurred. *

*
* * NSNetServicesCollisionError
* The given registration has had a name collision. Registration should * be cancelled and tried again with a different name. *

*
* * NSNetServicesNotFoundError
* The service could not be found. *

*
* * NSNetServicesActivityInProgress
* A request is already in progress. *

*
* * NSNetServicesBadArgumentError
* An invalid argument was used to create the object. *

*
* * NSNetServicesCancelledError
* The request has been cancelled. *

*
* * NSNetServicesInvalidError
* The service was improperly configured. *

*
* * NSNetServicesTimeoutError
* The request has timed out before a successful resolution. *

*
*
*/ NSNetServicesUnknownError = -72000L, NSNetServicesCollisionError = -72001L, NSNetServicesNotFoundError = -72002L, NSNetServicesActivityInProgress = -72003L, NSNetServicesBadArgumentError = -72004L, NSNetServicesCancelledError = -72005L, NSNetServicesInvalidError = -72006L, NSNetServicesTimeoutError = -72007L } NSNetServicesError; // // Public // extern NSString * const NSNetServicesErrorCode; extern NSString * const NSNetServicesErrorDomain; // // Referenced Classes // @class NSInputStream, NSOutputStream, NSRunLoop; // // Interface // /** * * * NSNetService class description * *

* *

* *

* *

*
*

* [NSNetService] lets you publish a network service in a domain using * multicast DNS. Additionally, it lets you resolve a network service that * was discovered by [NSNetServiceBrowser]. *

*/ @interface NSNetService : NSObject { @private void * _netService; id _delegate; void * _reserved; } // // Factory Methods // + (NSData *) dataFromTXTRecordDictionary: (NSDictionary *) txtDictionary; + (NSDictionary *) dictionaryFromTXTRecordData: (NSData *) txtData; // // Instance Methods // - (id) initWithDomain: (NSString *) domain type: (NSString *) type name: (NSString *) name; - (id) initWithDomain: (NSString *) domain type: (NSString *) type name: (NSString *) name port: (int) port; - (void) removeFromRunLoop: (NSRunLoop *) aRunLoop forMode: (NSString *) mode; - (void) scheduleInRunLoop: (NSRunLoop *) aRunLoop forMode: (NSString *) mode; - (void) publish; - (void) resolve; - (void) resolveWithTimeout: (NSTimeInterval) timeout; - (void) stop; - (void) startMonitoring; - (void) stopMonitoring; // // Accessor Methods // - (id) delegate; - (void) setDelegate: (id) delegate; - (NSArray *) addresses; - (NSString *) domain; - (NSString *) hostName; - (NSString *) name; - (NSString *) type; - (NSString *) protocolSpecificInformation; - (void) setProtocolSpecificInformation: (NSString *) specificInformation; - (NSData *) TXTRecordData; - (BOOL) setTXTRecordData: (NSData *) recordData; - (BOOL) getInputStream: (NSInputStream **) inputStream outputStream: (NSOutputStream **) outputStream; @end /***************************************************************************/ // // Interface // /** * * * NSNetServiceBrowser class description * *

* *

* *

* *

*
*

* [NSNetServiceBrowser] asynchronously lets you discover network domains * and, additionally, search for a type of network service. It sends its * delegate a message whenever it discovers a new network service, and * whenever a network service goes away. *

*

* Each [NSNetServiceBrowser] performs one search at a time. So in order * to perform multiple searches simultaneously, create multiple instances. *

*/ @interface NSNetServiceBrowser : NSObject { @private void * _netServiceBrowser; id _delegate; void * _reserved; } // // Factory Methods // // // Instance Methods // - (id) init; - (void) removeFromRunLoop: (NSRunLoop *) aRunLoop forMode: (NSString *) mode; - (void) scheduleInRunLoop: (NSRunLoop *) aRunLoop forMode: (NSString *) mode; - (void) searchForAllDomains; - (void) searchForBrowsableDomains; - (void) searchForRegistrationDomains; - (void) searchForServicesOfType: (NSString *) serviceType inDomain: (NSString *) domainName; - (void) stop; // // Accessor Methods // - (id) delegate; - (void) setDelegate: (id) delegate; @end /***************************************************************************/ // // Interface // /** * * * NSObject (NSNetServiceDelegateMethods) category description * *

* *

* *

* *

*
*

* This informal protocol must be adopted by any class wishing to implement * an [NSNetService] delegate. *

*/ @interface NSObject (NSNetServiceDelegateMethods) /** * Notifies the delegate that the network is ready to publish the service. * *

See also:
* [NSNetService-publish]
*

*/ - (void) netServiceWillPublish: (NSNetService *) sender; /** * Notifies the delegate that the service was successfully published. * *

See also:
* [NSNetService-publish]
*

*/ - (void) netServiceDidPublish: (NSNetService *) sender; /** * Notifies the delegate that the service could not get published. * *

See also:
* [NSNetService-publish]
*

*/ - (void) netService: (NSNetService *) sender didNotPublish: (NSDictionary *) errorDict; /** * Notifies the delegate that the network is ready to resolve the service. * *

See also:
* [NSNetService-resolveWithTimeout:]
*

*/ - (void) netServiceWillResolve: (NSNetService *) sender; /** * Notifies the delegate that the service was resolved. * *

See also:
* [NSNetService-resolveWithTimeout:]
*

*/ - (void) netServiceDidResolveAddress: (NSNetService *) sender; /** * Notifies the delegate that the service could not get resolved. * *

See also:
* [NSNetService-resolveWithTimeout:]
*

*/ - (void) netService: (NSNetService *) sender didNotResolve: (NSDictionary *) errorDict; /** * Notifies the delegate that the request was stopped. * *

See also:
* [NSNetService-stop]
*

*/ - (void) netServiceDidStop: (NSNetService *) sender; /** * Notifies the delegate that the TXT record has been updated. * *

See also:
* [NSNetService-startMonitoring]
* [NSNetService-stopMonitoring] *

*/ - (void) netService: (NSNetService *) sender didUpdateTXTRecordData: (NSData *) data; @end /***************************************************************************/ // // Interface // /** * * * NSObject (NSNetServiceBrowserDelegateMethods) category description * *

* *

* *

* *

*
*

* This informal protocol must be adopted by any class wishing to implement * an [NSNetServiceBrowser] delegate. *

*/ @interface NSObject (NSNetServiceBrowserDelegateMethods) /** * Notifies the delegate that the search is about to begin. * *

See also:
* [NSNetServiceBrowser-netServiceBrowser:didNotSearch:]
*

*/ - (void) netServiceBrowserWillSearch: (NSNetServiceBrowser *) aNetServiceBrowser; /** * Notifies the delegate that the search was unsuccessful. * *

See also:
* [NSNetServiceBrowser-netServiceBrowserWillSearch:]
*

*/ - (void) netServiceBrowser: (NSNetServiceBrowser *) aNetServiceBrowser didNotSearch: (NSDictionary *) errorDict; /** * Notifies the delegate that the search was stopped. * *

See also:
* [NSNetServiceBrowser-stop]
*

*/ - (void) netServiceBrowserDidStopSearch: (NSNetServiceBrowser *) aNetServiceBrowser; /** * Notifies the delegate that a domain was found. * *

See also:
* [NSNetServiceBrowser-searchForBrowsableDomains]
* [NSNetServiceBrowser-searchForRegistrationDomains]
*

*/ - (void) netServiceBrowser: (NSNetServiceBrowser *) aNetServiceBrowser didFindDomain: (NSString *) domainString moreComing: (BOOL) moreComing; /** * Notifies the delegate that a domain has become unavailable. * *

See also:
*
*

*/ - (void) netServiceBrowser: (NSNetServiceBrowser *) aNetServiceBrowser didRemoveDomain: (NSString *) domainString moreComing: (BOOL) moreComing; /** * Notifies the delegate that a service was found. * *

See also:
* [NSNetServiceBrowser-searchForServicesOfType:inDomain:]
*

*/ - (void) netServiceBrowser: (NSNetServiceBrowser *) aNetServiceBrowser didFindService: (NSNetService *) aNetService moreComing: (BOOL) moreComing; /** * Notifies the delegate that a service has become unavailable. * *

See also:
*
*

*/ - (void) netServiceBrowser: (NSNetServiceBrowser *) aNetServiceBrowser didRemoveService: (NSNetService *) aNetService moreComing: (BOOL) moreComing; @end /***************************************************************************/ // // Prototypes // /***************************************************************************/ #endif