private int registerService(Context context) throws java.io.IOException { int port = findOpenSocket(); // Create the NsdServiceInfo object, and populate it. NsdServiceInfo serviceInfo = new NsdServiceInfo(); // The name is subject to change based on conflicts // with other services advertised on the same network. serviceInfo.setServiceName(SERVICE_NAME_DEFAULT); serviceInfo.setServiceType(SERVICE_TYPE); serviceInfo.setPort(port); mNsdManager = (NsdManager)context.getSystemService(Context.NSD_SERVICE); if (mRegistrationListener == null) initializeRegistrationListener(); mNsdManager.registerService( serviceInfo, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener); return port; }
@Override public void onServiceResolved(final NsdServiceInfo serviceInfo) { Log.v(TAG, "service resolved: name= " + serviceInfo.getServiceName()); final int port = serviceInfo.getPort(); final String host = serviceInfo.getHost().getHostName(); synchronized (mUrl) { if (serviceInfo.getServiceName().equals("openhab-ssl")) { mUrl.set("https://" + host + ":" + port); } else if (mUrl.get() == null) { mUrl.set("http://" + host + ":" + port); } mUrl.notifyAll(); } }
public void initializeResolveListener() { mResolveListener = new NsdManager.ResolveListener() { @Override public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) { Log.e(TAG, "Resolve failed" + errorCode); } @Override public void onServiceResolved(NsdServiceInfo serviceInfo) { Log.e(TAG, "Resolve Succeeded. " + serviceInfo); if (serviceInfo.getServiceName().equals(mServiceName)) { Log.d(TAG, "Same IP."); return; } mService = serviceInfo; } }; }
public void initializeRegistrationListener() { mRegistrationListener = new NsdManager.RegistrationListener() { @Override public void onServiceRegistered(NsdServiceInfo NsdServiceInfo) { mServiceName = NsdServiceInfo.getServiceName(); Log.d(TAG, "Service registered: " + mServiceName); } @Override public void onRegistrationFailed(NsdServiceInfo arg0, int arg1) { Log.d(TAG, "Service registration failed: " + arg1); } @Override public void onServiceUnregistered(NsdServiceInfo arg0) { Log.d(TAG, "Service unregistered: " + arg0.getServiceName()); } @Override public void onUnregistrationFailed(NsdServiceInfo serviceInfo, int errorCode) { Log.d(TAG, "Service unregistration failed: " + errorCode); } }; }
public void initializeResolveListener() { mResolveListener = new NsdManager.ResolveListener() { @Override public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) { Log.e(TAG, "Resolve failed " + errorCode); mService = null; callCallback(CallbackTypeEnum.ResolveFailed); } @Override public void onServiceResolved(NsdServiceInfo serviceInfo) { Log.v(TAG, "Resolve Succeeded. " + serviceInfo); if (serviceInfo.getServiceName().equals(mServiceName)) { // Log.d(TAG, "Same IP."); // return; } mService = serviceInfo; callCallback(CallbackTypeEnum.ServiceResolved); } }; }
public void testServiceLost() throws IOException, InterruptedException { startDiscoveryOnMainThread(); mDiscoveryListener.onDiscoveryStarted(SERVICE_TYPE); NsdServiceInfo serviceInfo = newNsdServiceInfo("device-1234", "_example._tcp."); MDNSDiscover.Result result = new MDNSDiscover.Result(); when(mMockResolver.resolve(eq("device-1234._example._tcp.local"), anyInt())).thenReturn(result); mLatch = new CountDownLatch(1); mDiscoveryListener.onServiceFound(serviceInfo); mLatch.await(); Map<String, MDNSDiscover.Result> expectedMap = new HashMap<>(); expectedMap.put("device-1234._example._tcp.local", result); verify(mMockListener).onServicesChanged(eq(expectedMap)); mLatch = new CountDownLatch(1); mDiscoveryListener.onServiceLost(serviceInfo); mLatch.await(); expectedMap.clear(); verify(mMockListener).onServicesChanged(eq(expectedMap)); stopDiscoveryOnMainThread(); }
/** * Resolve a service but inhibit the callback by having the main thread blocked. Stop the * DiscoverResolver as soon as the main thread is unblocked, then check the callback does not * occur after being stopped. * @throws IOException * @throws InterruptedException */ public void testNoChangesAfterStop() throws IOException, InterruptedException { MDNSDiscover.Result result = new MDNSDiscover.Result(); when(mMockResolver.resolve(eq("device-1234._example._tcp.local"), anyInt())).thenReturn(result); startDiscoveryOnMainThread(); mDiscoveryListener.onDiscoveryStarted(SERVICE_TYPE); NsdServiceInfo serviceInfo = newNsdServiceInfo("device-1234", "_example._tcp."); blockMainThread(); new Handler(Looper.getMainLooper()).post(DISCOVER_STOP); // queue this to happen straight after unblockMainThread() mDiscoveryListener.onServiceFound(serviceInfo); Thread.sleep(100); // give the resolver some time verify(mMockResolver).resolve(eq("device-1234._example._tcp.local"), anyInt()); verify(mMockListener, never()).onServicesChanged(anyMap()); unblockMainThread(); Thread.sleep(100); verify(mMockListener, never()).onServicesChanged(anyMap()); }
private void initializeResolveListener() { mResolveListener = new NsdManager.ResolveListener() { @Override public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) { Log.d(TAG, "Resolve failed"); } @Override public void onServiceResolved(final NsdServiceInfo serviceInfo) { Log.d(TAG, "Service resolved :" + serviceInfo); final String hostName = serviceInfo.getHost().getHostName(); final int port = serviceInfo.getPort(); final String serviceName = serviceInfo.getServiceName(); handler.post(new Runnable() { @Override public void run() { serviceDiscoveryListener.onBonjourServiceDiscovered(hostName, port, serviceName); } }); } }; }
@TargetApi(16) public static JSONObject toJSON(final NsdServiceInfo serviceInfo) throws JSONException { JSONObject obj = new JSONObject(); InetAddress host = serviceInfo.getHost(); if (host != null) { obj.put("host", host.getHostName()); } int port = serviceInfo.getPort(); if (port != 0) { obj.put("port", port); } String serviceName = serviceInfo.getServiceName(); if (serviceName != null) { obj.put("serviceName", serviceName); } String serviceType = serviceInfo.getServiceType(); if (serviceType != null) { obj.put("serviceType", serviceType); } return obj; }
@Override public void onServiceFound(final NsdServiceInfo serviceInfo) { Log.d(LOGTAG, "onServiceFound: " + serviceInfo.getServiceName()); JSONObject json = null; try { json = NsdMulticastDNSManager.toJSON(serviceInfo); } catch (JSONException e) { throw new RuntimeException(e); } GeckoAppShell.sendRequestToGecko(new GeckoRequest("NsdManager:ServiceFound", json) { @Override public void onResponse(NativeJSObject nativeJSObject) { // don't care return value. } }); }
@Override public void onServiceLost(final NsdServiceInfo serviceInfo) { Log.d(LOGTAG, "onServiceLost: " + serviceInfo.getServiceName()); JSONObject json = null; try { json = NsdMulticastDNSManager.toJSON(serviceInfo); } catch (JSONException e) { throw new RuntimeException(e); } GeckoAppShell.sendRequestToGecko(new GeckoRequest("NsdManager:ServiceLost", json) { @Override public void onResponse(NativeJSObject nativeJSObject) { // don't care return value. } }); }
public void registerService(final int port, final String serviceName, final String serviceType, final Map<String, String> attributes, final EventCallback callback) { Log.d(LOGTAG, "registerService: " + serviceName + "." + serviceType + ":" + port); synchronized (this) { if (mStartCallback != null) { throw new RuntimeException("Previous operation is not finished"); } mStartCallback = callback; } NsdServiceInfo serviceInfo = new NsdServiceInfo(); serviceInfo.setPort(port); serviceInfo.setServiceName(serviceName); serviceInfo.setServiceType(serviceType); setAttributes(serviceInfo, attributes); nsdManager.registerService(serviceInfo, NsdManager.PROTOCOL_DNS_SD, this); }
private void initializeResolveListener() { mResolveListener = new NsdManager.ResolveListener() { @Override public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) { Log.e(Constants.TAG, "Resolve failed" + errorCode); } @Override public void onServiceResolved(NsdServiceInfo serviceInfo) { mServiceInfo = serviceInfo; int port = mServiceInfo.getPort(); InetAddress host = mServiceInfo.getHost(); String address = host.getHostAddress(); Log.d(Constants.TAG, "Resolved address = " + address); ServerInfo service = new ServerInfo(address, port); mServers.add(service); } }; }
public void connectService(MenuItem v){ Toast.makeText(getApplicationContext(), "Connect to service...",Toast.LENGTH_SHORT).show(); NsdServiceInfo service = mNsdHelper.getChosenServiceInfo(); if(service!=null){ //try { this.server.setService(false); //InetAddress ip=InetAddress.getByName("192.168.1.100"); //Client client=new Client(ip,2664,datasource,server,true); Client client=new Client(service.getHost(),service.getPort(),datasource,server,true); Toast.makeText(getApplicationContext(), "Connect to "+service.getServiceName()+" on port "+service.getPort(), Toast.LENGTH_SHORT).show(); client.start(); //} catch (UnknownHostException e) { // TODO Auto-generated catch block // e.printStackTrace(); //} }else{ Toast.makeText(getApplicationContext(), "Service not found", Toast.LENGTH_SHORT).show(); } }
public void initializeResolveListener() { mResolveListener = new NsdManager.ResolveListener() { public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) { Toast.makeText(mContext, "Resolve failed",Toast.LENGTH_SHORT).show(); Log.e(TAG, "Resolve failed" + errorCode); } public void onServiceResolved(NsdServiceInfo serviceInfo) { Log.d(TAG, "Resolve Succeeded. " + serviceInfo); Toast.makeText(mContext, "Resolve succeeded",Toast.LENGTH_SHORT).show(); if (serviceInfo.getServiceName().equals(mServiceName)) { Log.d(TAG, "Same IP."); return; } mService = serviceInfo; setConnected(true); } }; }
@Override public void onCreate() { httpService = this; Log.d(TAG, "My Service Created"); try { server = new NanoHTTPDReceiver( // 0, // new File("/"), // getApplicationContext() // ); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Log.d(TAG, "using port " + server.getLocalPort()); NsdServiceInfo nsi = new NsdServiceInfo(); nsi.setPort(server.getLocalPort()); nsi.setServiceName("MultiShare"); nsi.setServiceType("_http._tcp."); mNsdManager = (NsdManager) getSystemService(Context.NSD_SERVICE); mNsdManager.registerService(nsi, NsdManager.PROTOCOL_DNS_SD, this); }
public void initializeResolveListener() { mResolveListener = new NsdManager.ResolveListener() { @Override public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) { Log.e(TAG, "Resolve failed" + errorCode); } @Override public void onServiceResolved(NsdServiceInfo serviceInfo) { Log.e(TAG, "Resolve Succeeded. " + serviceInfo); mService = serviceInfo; /* if (serviceInfo.getServiceName().equals(mServiceName)) { Log.d(TAG, "Same IP."); return; } mService = serviceInfo; */ } }; }
public void initializeRegistrationListener() { mRegistrationListener = new NsdManager.RegistrationListener() { @Override public void onServiceRegistered(NsdServiceInfo NsdServiceInfo) { mServiceName = NsdServiceInfo.getServiceName(); } @Override public void onRegistrationFailed(NsdServiceInfo arg0, int arg1) { } @Override public void onServiceUnregistered(NsdServiceInfo arg0) { } @Override public void onUnregistrationFailed(NsdServiceInfo serviceInfo, int errorCode) { } }; }
private void initResolveListener() { mResolveListener = new NsdManager.ResolveListener() { @Override public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) { Timber.e("Resolve failed" + errorCode); } @Override public void onServiceResolved(NsdServiceInfo serviceInfo) { Timber.e("Resolve Succeeded. " + serviceInfo); if(onNsdChangeListener != null) { onNsdChangeListener.onServiceResolved(serviceInfo); } else { Timber.e("no OnNsdChangeListener set"); } } }; }
private void initializeRegistrationListener() { mRegistrationListener = new NsdManager.RegistrationListener() { @Override public void onServiceRegistered(NsdServiceInfo NsdServiceInfo) { // Save the service name. Android may have changed it in order to // resolve a conflict, so update the name you initially requested // with the name Android actually used. mServiceName = NsdServiceInfo.getServiceName(); } @Override public void onRegistrationFailed(NsdServiceInfo serviceInfo, int errorCode) { // Registration failed! Put debugging code here to determine why. } @Override public void onServiceUnregistered(NsdServiceInfo arg0) { // Service has been unregistered. This only happens when you call // NsdManager.unregisterService() and pass in this listener. } @Override public void onUnregistrationFailed(NsdServiceInfo serviceInfo, int errorCode) { // Unregistration failed. Put debugging code here to determine why. } }; }
public void registerService(int port) { // Create the NsdServiceInfo object, and populate it. NsdServiceInfo serviceInfo = new NsdServiceInfo(); // The name is subject to change based on conflicts // with other services advertised on the same network. serviceInfo.setServiceName(SERVICE_NAME); serviceInfo.setServiceType(SERVICE_TYPE); serviceInfo.setPort(port); mNsdManager.registerService( serviceInfo, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener); }
public void clickConnect(View v) { NsdServiceInfo service = mNsdHelper.getChosenServiceInfo(); if (service != null) { Log.d(TAG, "Connecting."); mConnection.connectToServer(service.getHost(), service.getPort()); } else { Log.d(TAG, "No service to connect to!"); } }
public void registerService(int port) { tearDown(); // Cancel any previous registration request initializeRegistrationListener(); NsdServiceInfo serviceInfo = new NsdServiceInfo(); serviceInfo.setPort(port); serviceInfo.setServiceName(mServiceName); serviceInfo.setServiceType(SERVICE_TYPE); mNsdManager.registerService( serviceInfo, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener); }
private NsdServiceInfo getServiceInfo(String name, String type, int localPort) { final NsdServiceInfo serviceInfo = new NsdServiceInfo(); serviceInfo.setServiceName(name); serviceInfo.setServiceType(type); serviceInfo.setPort(localPort); return serviceInfo; }
@Override public void onServiceRegistered(NsdServiceInfo serviceInfo) { Log.d(LOG_TAG, "Service registered. Start listening for connections."); final ServerThread serverThread = new ServerThread(serverSocket, socketHandler); serverThread.setName("Suas NW Server"); serverThread.start(); }
public void initializeRegistrationListener() { mRegistrationListener = new NsdManager.RegistrationListener() { @Override public void onServiceRegistered(NsdServiceInfo NsdServiceInfo) { mServiceName = NsdServiceInfo.getServiceName(); Log.d(TAG, "Service registered: " + NsdServiceInfo); callCallback(CallbackTypeEnum.ServiceRegistered); } @Override public void onRegistrationFailed(NsdServiceInfo arg0, int arg1) { Log.d(TAG, "Service registration failed: " + arg1); callCallback(CallbackTypeEnum.RegistrationFailed); } @Override public void onServiceUnregistered(NsdServiceInfo arg0) { Log.d(TAG, "Service unregistered: " + arg0.getServiceName()); callCallback(CallbackTypeEnum.ServiceUnregistered); } @Override public void onUnregistrationFailed(NsdServiceInfo serviceInfo, int errorCode) { Log.d(TAG, "Service unregistration failed: " + errorCode); callCallback(CallbackTypeEnum.UnregistrationFailed); } }; }
public void registerService(int port) { tearDown(); // Cancel any previous registration request initializeRegistrationListener(); NsdServiceInfo serviceInfo = new NsdServiceInfo(); serviceInfo.setPort(port); serviceInfo.setServiceName(mServiceName); serviceInfo.setServiceType(SERVICE_TYPE); Log.v(TAG, Build.MANUFACTURER + " registering service: " + port); mNsdManager.registerService( serviceInfo, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener); }
private synchronized void singleResolveService(NsdServiceInfo service) { try { if ((d) && (outstanding.get() != 0)) UserError.Log.d(TAG, "Current outstanding requests: " + outstanding.get()); int spinner = 0; while (locked_until > JoH.tsl()) { PowerManager.WakeLock wlx = JoH.getWakeLock("mdns-resolve", 200); spinner++; if ((spinner % 10) == 0) UserError.Log.d(TAG, "Waiting on Lock: " + JoH.niceTimeTill(locked_until)); Thread.sleep(100); JoH.releaseWakeLock(wlx); } // TODO wly timeout excessive and not cancelled PowerManager.WakeLock wly = JoH.getWakeLock("mdns-resolve-x", 2000); if (locked_until != 0) { mResolveListener = initializeResolveListener(); UserError.Log.d(TAG, "Creating additional listener"); } locked_until = JoH.tsl() + WAIT_FOR_REPLIES_TIMEOUT_MS; outstanding.incrementAndGet(); mNsdManager.resolveService(service, mResolveListener); } catch (InterruptedException e) { UserError.Log.e(TAG, "Interrupted waiting to resolver lock!"); } }
public void clickConnect() { NsdServiceInfo service = mNsdHelper.getChosenServiceInfo(); if (service != null) { Log.d(TAG, "Connecting..."); Toast.makeText(this, "Connecting...",Toast.LENGTH_SHORT).show(); mConnection.commonConnection(service.getHost(), service.getPort(), null); } else { Log.d(TAG, "No service to connect to!"); Toast.makeText(this, "No service to connect to!",Toast.LENGTH_SHORT).show(); } }
public void initializeNsd() { mResolveListener = new NsdManager.ResolveListener() { @Override public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) { Log.e(TAG, "Resolve failed" + errorCode); Toast.makeText(mContext, "Resolve failed" + errorCode, Toast.LENGTH_SHORT).show(); } @Override public void onServiceResolved(NsdServiceInfo serviceInfo) { Log.d(TAG, "Resolve Succeeded. " + serviceInfo); Toast.makeText(mContext, "Resolve Succeeded. " + serviceInfo, Toast.LENGTH_SHORT).show(); if (serviceInfo.getServiceName().equals(mServiceName) && flag) { Log.d(TAG, "Same IP."); Toast.makeText(mContext, "Same IP.", Toast.LENGTH_SHORT).show(); return; } mService = serviceInfo; final NsdChatActivity ac = (NsdChatActivity)mContext; ac.runOnUiThread(new Runnable() { @Override public void run() { //show the join button ac.setVisibilityButton(true); } }); //ac.setVisibilityButton(true); } }; }
public void initializeRegistrationListener() { mRegistrationListener = new NsdManager.RegistrationListener() { @Override public void onServiceRegistered(NsdServiceInfo NsdServiceInfo) { mServiceName = NsdServiceInfo.getServiceName(); flag = true; Log.d(TAG, "Service registered: " + mServiceName); Toast.makeText(mContext, "Service registered: " + mServiceName, Toast.LENGTH_SHORT).show(); } @Override public void onRegistrationFailed(NsdServiceInfo arg0, int arg1) { Log.d(TAG, "Service registration failed: " + arg1); Toast.makeText(mContext,"Service registration failed: " + arg1, Toast.LENGTH_SHORT).show(); } @Override public void onServiceUnregistered(NsdServiceInfo arg0) { Log.d(TAG, "Service unregistered: " + arg0.getServiceName()); Toast.makeText(mContext, "Service unregistered: " + arg0.getServiceName(), Toast.LENGTH_SHORT).show(); flag = false; } @Override public void onUnregistrationFailed(NsdServiceInfo serviceInfo, int errorCode) { Log.d(TAG, "Service unregistration failed: " + errorCode); Toast.makeText(mContext, "Service unregistration failed: " + errorCode, Toast.LENGTH_SHORT).show(); } }; }
public void registerService(int port) { tearDown(); // Cancel any previous registration request initializeRegistrationListener(); NsdServiceInfo serviceInfo = new NsdServiceInfo(); serviceInfo.setPort(port); mServiceName = NsdChatActivity.mServiceName; serviceInfo.setServiceName(mServiceName); serviceInfo.setServiceType(SERVICE_TYPE); Toast.makeText(mContext, "Service registered at port: " + port,Toast.LENGTH_SHORT).show(); mNsdManager.registerService( serviceInfo, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener); }
public NsdServiceInfo toServiceInfo() { NsdServiceInfo serviceInfo = new NsdServiceInfo(); serviceInfo.setServiceType(SERVICE_TYPE); serviceInfo.setServiceName(mName); //serviceInfo.setAttribute(UUID, mUuid); serviceInfo.setPort(mPort); return serviceInfo; }
@Override public void onServiceFound(NsdServiceInfo serviceInfo) { if (serviceInfo.getServiceName().equals(mThisDeviceName)) { return; } Log.d(TAG, String.format("found \"%s\"; queued for resolving", serviceInfo.getServiceName())); boolean resolve; synchronized (mQueue) { resolve = mQueue.size() == 0; mQueue.add(serviceInfo); } if (resolve) { resolveNextService(); } }
@Override public void onServiceLost(final NsdServiceInfo serviceInfo) { Log.d(TAG, String.format("lost \"%s\"", serviceInfo.getServiceName())); runOnUiThread(new Runnable() { @Override public void run() { remove(serviceInfo.getServiceName()); mDevices.remove(serviceInfo.getServiceName()); } }); }