diff options
Diffstat (limited to 'mDNSResponder/Clients/Java/SwingDomainListener.java')
-rw-r--r-- | mDNSResponder/Clients/Java/SwingDomainListener.java | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/mDNSResponder/Clients/Java/SwingDomainListener.java b/mDNSResponder/Clients/Java/SwingDomainListener.java new file mode 100644 index 00000000..b67313b7 --- /dev/null +++ b/mDNSResponder/Clients/Java/SwingDomainListener.java @@ -0,0 +1,116 @@ +/* -*- Mode: Java; tab-width: 4 -*- + * + * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * + * Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. + * ("Apple") in consideration of your agreement to the following terms, and your + * use, installation, modification or redistribution of this Apple software + * constitutes acceptance of these terms. If you do not agree with these terms, + * please do not use, install, modify or redistribute this Apple software. + * + * In consideration of your agreement to abide by the following terms, and subject + * to these terms, Apple grants you a personal, non-exclusive license, under Apple's + * copyrights in this original Apple software (the "Apple Software"), to use, + * reproduce, modify and redistribute the Apple Software, with or without + * modifications, in source and/or binary forms; provided that if you redistribute + * the Apple Software in its entirety and without modifications, you must retain + * this notice and the following text and disclaimers in all such redistributions of + * the Apple Software. Neither the name, trademarks, service marks or logos of + * Apple Computer, Inc. may be used to endorse or promote products derived from the + * Apple Software without specific prior written permission from Apple. Except as + * expressly stated in this notice, no other rights or licenses, express or implied, + * are granted by Apple herein, including but not limited to any patent rights that + * may be infringed by your derivative works or by other works in which the Apple + * Software may be incorporated. + * + * The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO + * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED + * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN + * COMBINATION WITH YOUR PRODUCTS. + * + * IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION + * OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT + * (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +import javax.swing.*; +import com.apple.dnssd.*; + + +/** Use this to schedule DomainListener callbacks via SwingUtilities.invokeAndWait(). */ + +public class SwingDomainListener implements Runnable, DomainListener +{ + /** Create a listener for DNSSD that will call your listener on the Swing/AWT event thread. */ + public SwingDomainListener( DomainListener listener) + { fListener = listener; fErrorCode = 0; } + + /** (Clients should not call this method directly.) */ + public void operationFailed( DNSSDService service, int errorCode) + { + fEnumerator = service; + fErrorCode = errorCode; + this.schedule(); + } + + /** (Clients should not call this method directly.) */ + public void domainFound( DNSSDService domainEnum, int flags, int ifIndex, String domain) + + { + fEnumerator = domainEnum; + fIsAdd = true; + fFlags = flags; + fIndex = ifIndex; + fDomain = domain; + this.schedule(); + } + + /** (Clients should not call this method directly.) */ + public void domainLost( DNSSDService domainEnum, int flags, int ifIndex, String domain) + { + fEnumerator = domainEnum; + fIsAdd = false; + fFlags = flags; + fIndex = ifIndex; + fDomain = domain; + this.schedule(); + } + + /** (Clients should not call this method directly.) */ + public void run() + { + if ( fErrorCode != 0) + fListener.operationFailed( fEnumerator, fErrorCode); + else if ( fIsAdd) + fListener.domainFound( fEnumerator, fFlags, fIndex, fDomain); + else + fListener.domainLost( fEnumerator, fFlags, fIndex, fDomain); + } + + protected void schedule() + { + try { + SwingUtilities.invokeAndWait( this); + } + catch ( Exception e) + { + e.printStackTrace(); + } + } + + protected DomainListener fListener; + + protected boolean fIsAdd; + protected DNSSDService fEnumerator; + protected int fFlags; + protected int fIndex; + protected int fErrorCode; + protected String fDomain; +} + |