Skip to content

Instantly share code, notes, and snippets.

@maydin
Created September 14, 2016 05:24
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save maydin/21d671ab68adc2b2f730cd3194afc83c to your computer and use it in GitHub Desktop.
Rx Discovery Manager
public class RxDiscoveryManager {
final NsdManager mNsdManager;
public static final String SERVICE_TYPE = "_http._tcp.";
public RxDiscoveryManager(NsdManager mNsdManager)
{
this.mNsdManager = mNsdManager;
}
public rx.Observable<Appliance> discoveryChanged(final AsyncEmitter.BackpressureMode backpressureMode) {
return rx.Observable.fromAsync(new Action1<AsyncEmitter<Appliance>>() {
@Override
public void call(final AsyncEmitter<Appliance> applianceAsyncEmitter) {
mNsdManager.discoverServices(
SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD, new NsdManager.DiscoveryListener() {
@Override
public void onStartDiscoveryFailed(String s, int i) {
}
@Override
public void onStopDiscoveryFailed(String s, int i) {
}
@Override
public void onDiscoveryStarted(String s) {
}
@Override
public void onDiscoveryStopped(String s) {
}
@Override
public void onServiceFound(NsdServiceInfo nsdServiceInfo) {
applianceAsyncEmitter.onNext(new Appliance(nsdServiceInfo.getServiceName(),
Appliance.APPLIANCE_LIST_STATUS_ADDED));
}
@Override
public void onServiceLost(NsdServiceInfo nsdServiceInfo) {
applianceAsyncEmitter.onNext(new Appliance(nsdServiceInfo.getServiceName(),
Appliance.APPLIANCE_LIST_STATUS_REMOVED));
}
});
}
}, backpressureMode);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment