// Path: dnssd/src/main/java/com/github/druk/dnssd/DNSSDRegistration.java
// public interface	DNSSDRegistration extends DNSSDService {
// 	/** Get a reference to the primary TXT record of a registered service.<P> 
// 		The record can be updated by sending it an update() message.<P>
// 
// 		<P>
// 		@return		A {@link DNSRecord}.
// 					If {@link DNSSDRegistration#stop} is called, the DNSRecord is also
// 					invalidated and may not be used further.
// 	*/
// 	DNSRecord getTXTRecord() throws DNSSDException;
// 
// 	/** Add a record to a registered service.<P> 
// 		The name of the record will be the same as the registered service's name.<P>
// 		The record can be updated or deregistered by sending it an update() or remove() message.<P>
// 
// 		@param	flags
// 					Currently unused, reserved for future use.
// 		<P>
// 		@param	rrType
// 					The type of the record (e.g. TXT, SRV, etc), as defined in nameser.h.
// 		<P>
// 		@param	rData
// 					The raw rdata to be contained in the added resource record.
// 		<P>
// 		@param	ttl
// 					The time to live of the resource record, in seconds.
// 		<P>
// 		@return		A {@link DNSRecord} that may be passed to updateRecord() or removeRecord().
// 					If {@link DNSSDRegistration#stop} is called, the DNSRecord is also
// 					invalidated and may not be used further.
// 	*/
// 	DNSRecord addRecord(int flags, int rrType, byte[] rData, int ttl) throws DNSSDException;
// } 
// 
// Path: dnssd/src/main/java/com/github/druk/dnssd/DNSSDService.java
// public interface	DNSSDService
// {
// 	/**
// 	Halt the active operation and free resources associated with the DNSSDService.<P>
// 
// 	Any services or records registered with this DNSSDService will be deregistered. Any
// 	Browse, Resolve, or Query operations associated with this reference will be terminated.<P>
// 
// 	Note: if the service was initialized with DNSSD.register(), and an extra resource record was
// 	added to the service via {@link DNSSDRegistration#addRecord}, the DNSRecord so created
// 	is invalidated when this method is called - the DNSRecord may not be used afterward.
// 	*/
// 	void		stop();
// } 
// 
// Path: dnssd/src/main/java/com/github/druk/dnssd/RegisterListener.java
// public interface RegisterListener extends BaseListener
// {
// 	/** Called when a registration has been completed.<P> 
// 
// 		@param	registration
// 					The active registration.
// 		<P>
// 		@param	flags
// 					Currently unused, reserved for future use.
// 		<P>
// 		@param	serviceName
// 					The service name registered (if the application did not specify a name in 
// 					DNSSD.register(), this indicates what name was automatically chosen).
// 		<P>
// 		@param	regType
// 					The type of service registered, as it was passed to DNSSD.register().
// 		<P>
// 		@param	domain
// 					The domain on which the service was registered. If the application did not
// 					specify a domain in DNSSD.register(), this is the default domain
// 					on which the service was registered.
// 	*/
// 	void serviceRegistered(DNSSDRegistration registration, int flags, String serviceName, String regType, String domain);
// }


import com.github.druk.dnssd.DNSSDRegistration;
import com.github.druk.dnssd.DNSSDService;
import com.github.druk.dnssd.RegisterListener;
import io.reactivex.FlowableEmitter;
/*
 * Copyright (C) 2016 Andriy Druk
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.github.druk.rx2dnssd;



class Rx2RegisterListener implements RegisterListener {
    private final FlowableEmitter<? super BonjourService> emitter;

    Rx2RegisterListener(FlowableEmitter<? super BonjourService> emitter) {
        this.emitter = emitter;
    }

    @Override
    public void serviceRegistered(DNSSDRegistration registration, int flags, String serviceName, String regType, String domain) {
        if (emitter.isCancelled()) {
            return;
        }
        BonjourService service = new BonjourService.Builder(flags, 0, serviceName, regType, domain).build();
        emitter.onNext(service);
    }

    @Override
    public void operationFailed(DNSSDService service, int errorCode) {
        if (emitter.isCancelled()) {
// Path: dnssd/src/main/java/com/github/druk/dnssd/DNSSDRegistration.java
// public interface	DNSSDRegistration extends DNSSDService {
// 	/** Get a reference to the primary TXT record of a registered service.<P> 
// 		The record can be updated by sending it an update() message.<P>
// 
// 		<P>
// 		@return		A {@link DNSRecord}.
// 					If {@link DNSSDRegistration#stop} is called, the DNSRecord is also
// 					invalidated and may not be used further.
// 	*/
// 	DNSRecord getTXTRecord() throws DNSSDException;
// 
// 	/** Add a record to a registered service.<P> 
// 		The name of the record will be the same as the registered service's name.<P>
// 		The record can be updated or deregistered by sending it an update() or remove() message.<P>
// 
// 		@param	flags
// 					Currently unused, reserved for future use.
// 		<P>
// 		@param	rrType
// 					The type of the record (e.g. TXT, SRV, etc), as defined in nameser.h.
// 		<P>
// 		@param	rData
// 					The raw rdata to be contained in the added resource record.
// 		<P>
// 		@param	ttl
// 					The time to live of the resource record, in seconds.
// 		<P>
// 		@return		A {@link DNSRecord} that may be passed to updateRecord() or removeRecord().
// 					If {@link DNSSDRegistration#stop} is called, the DNSRecord is also
// 					invalidated and may not be used further.
// 	*/
// 	DNSRecord addRecord(int flags, int rrType, byte[] rData, int ttl) throws DNSSDException;
// } 
// 
// Path: dnssd/src/main/java/com/github/druk/dnssd/DNSSDService.java
// public interface	DNSSDService
// {
// 	/**
// 	Halt the active operation and free resources associated with the DNSSDService.<P>
// 
// 	Any services or records registered with this DNSSDService will be deregistered. Any
// 	Browse, Resolve, or Query operations associated with this reference will be terminated.<P>
// 
// 	Note: if the service was initialized with DNSSD.register(), and an extra resource record was
// 	added to the service via {@link DNSSDRegistration#addRecord}, the DNSRecord so created
// 	is invalidated when this method is called - the DNSRecord may not be used afterward.
// 	*/
// 	void		stop();
// } 
// 
// Path: dnssd/src/main/java/com/github/druk/dnssd/RegisterListener.java
// public interface RegisterListener extends BaseListener
// {
// 	/** Called when a registration has been completed.<P> 
// 
// 		@param	registration
// 					The active registration.
// 		<P>
// 		@param	flags
// 					Currently unused, reserved for future use.
// 		<P>
// 		@param	serviceName
// 					The service name registered (if the application did not specify a name in 
// 					DNSSD.register(), this indicates what name was automatically chosen).
// 		<P>
// 		@param	regType
// 					The type of service registered, as it was passed to DNSSD.register().
// 		<P>
// 		@param	domain
// 					The domain on which the service was registered. If the application did not
// 					specify a domain in DNSSD.register(), this is the default domain
// 					on which the service was registered.
// 	*/
// 	void serviceRegistered(DNSSDRegistration registration, int flags, String serviceName, String regType, String domain);
// }


// Path: rx2dnssd/src/main/java/com/github/druk/rx2dnssd/Rx2RegisterListener.java
import com.github.druk.dnssd.DNSSDRegistration;
import com.github.druk.dnssd.DNSSDService;
import com.github.druk.dnssd.RegisterListener;
import io.reactivex.FlowableEmitter;

/*
 * Copyright (C) 2016 Andriy Druk
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.github.druk.rx2dnssd;



class Rx2RegisterListener implements RegisterListener {
    private final FlowableEmitter<? super BonjourService> emitter;

    Rx2RegisterListener(FlowableEmitter<? super BonjourService> emitter) {
        this.emitter = emitter;
    }

    @Override
    public void serviceRegistered(DNSSDRegistration registration, int flags, String serviceName, String regType, String domain) {
        if (emitter.isCancelled()) {
            return;
        }
        BonjourService service = new BonjourService.Builder(flags, 0, serviceName, regType, domain).build();
        emitter.onNext(service);
    }

    @Override
    public void operationFailed(DNSSDService service, int errorCode) {
        if (emitter.isCancelled()) {
            return;