/** * Sends an observe request and waits until it has been established * whereupon the specified handler is invoked when a notification arrives. * * @param handler the Response handler * @return the CoAP observe relation */ public CoapObserveRelation observeAndWait(CoapHandler handler) { Request request = newGet().setURI(uri).setObserve(); return observeAndWait(request, handler); }
/** * Sends an observe request and waits until it has been established * whereupon the specified handler is invoked when a notification arrives. * * @param handler the Response handler * @return the CoAP observe relation */ public CoapObserveRelation observeAndWait(CoapHandler handler) { Request request = Request.newGet().setURI(uri).setObserve(); return observeAndWait(request, handler); }
CoapObserveRelation relation4 = client.observeAndWait( new CoapHandler() { @Override public void onLoad(CoapResponse response) {
/** * Sends an observe request with the specified Accept option and waits until * it has been established whereupon the specified handler is invoked when a * notification arrives. * * @param handler the Response handler * @param accept the Accept option * @return the CoAP observe relation */ public CoapObserveRelation observeAndWait(CoapHandler handler, int accept) { Request request = newGet().setURI(uri).setObserve(); request.getOptions().setAccept(accept); return observeAndWait(request, handler); }
/** * Sends an observe request with the specified Accept option and waits until * it has been established whereupon the specified handler is invoked when a * notification arrives. * * @param handler the Response handler * @param accept the Accept option * @return the CoAP observe relation */ public CoapObserveRelation observeAndWait(CoapHandler handler, int accept) { Request request = Request.newGet().setURI(uri).setObserve(); request.getOptions().setAccept(accept); return observeAndWait(request, handler); }
/** * Test case for CoapClient.observeAndWait(Request request, CoapHandler * handler) exception handling. * * @throws Exception */ @Test(expected = IllegalArgumentException.class) public void testObserveAndWaitExceptionHandling() throws Exception { CoapClient client = new CoapClient(uriX); Request request = Request.newGet().setURI(uriX); @SuppressWarnings("unused") CoapObserveRelation rel = client.observeAndWait(request, new CoapHandler() { @Override public void onLoad(CoapResponse response) { } @Override public void onError() { } }); }
@Test(expected = IllegalStateException.class) public void testObserveClientReregisterAfterReject() throws Exception { resourceX.setObserveType(Type.NON); resourceX.rejectNextGet(); CoapClient client = new CoapClient(uriX); CountingHandler handler = new CountingHandler(); CoapObserveRelation rel = client.observeAndWait(handler); assertTrue("Not rejected", rel.isCanceled()); rel.reregister(); }
@Test public void testObserveClient() throws Exception { final AtomicInteger resetCounter = new AtomicInteger(0); server.getEndpoints().get(0).addInterceptor(new ServerMessageInterceptor(resetCounter)); resourceX.setObserveType(Type.NON); int repeat = 3; CoapClient client = new CoapClient(uriX); CountingHandler handler = new CountingHandler(); CoapObserveRelation rel = client.observeAndWait(handler); // onLoad is called asynchronous to returning the response // therefore wait for one onLoad assertTrue(handler.waitForLoadCalls(1, 1000, TimeUnit.MILLISECONDS)); assertFalse("Response not received", rel.isCanceled()); assertNotNull("Response not received", rel.getCurrent()); assertEquals("\"resX says hi for the 1 time\"", rel.getCurrent().getResponseText()); rel.reactiveCancel(); System.out.println(uriX + " reactive canceled"); for (int i = 0; i < repeat; ++i) { resourceX.changed("client"); Thread.sleep(50); } // still only one notification (the response) is received assertFalse(handler.waitForLoadCalls(2, 1000, TimeUnit.MILLISECONDS)); assertEquals(repeat, resetCounter.get()); // repeat RST received // no RST delivered (interceptor) assertEquals(1, resourceX.getObserverCount()); }
@Test(expected = IllegalStateException.class) public void testObserveClientReregisterAfterTimeout() throws Exception { resourceX.setObserveType(Type.NON); resourceX.delayNextGet(100); CoapClient client = new CoapClient(uriX); long timeout = client.getTimeout(); client.setTimeout(1); CountingHandler handler = new CountingHandler(); CoapObserveRelation rel = client.observeAndWait(handler); assertTrue("No timeout", rel.isCanceled()); client.setTimeout(timeout); rel.reregister(); }
CoapObserveRelation obs1 = client.observeAndWait( new CoapHandler() { @Override public void onLoad(CoapResponse response) {
@Test public void testObserveClientReregisterAfterReregister() throws Exception { resourceX.setObserveType(Type.NON); CoapClient client = new CoapClient(uriX); CountingHandler handler = new CountingHandler(); CoapObserveRelation rel = client.observeAndWait(handler); assertFalse("Response not received", rel.isCanceled()); assertTrue(handler.waitForLoadCalls(1, 1000, TimeUnit.MILLISECONDS)); resourceX.delayNextGet(100); // one more onLoad call assertTrue("reregister not triggered", rel.reregister()); // one more onLoad call assertFalse("reregister not ignored", rel.reregister()); assertTrue(handler.waitForLoadCalls(2, 1000, TimeUnit.MILLISECONDS)); // one more onLoad call resourceX.changed("client"); // assert notify received assertTrue(handler.waitForLoadCalls(3, 1000, TimeUnit.MILLISECONDS)); assertFalse("Response not received", rel.isCanceled()); }
CoapObserveRelation rel = client.observeAndWait(handler);