vertx3 - how to write own async hander in java vertx -
i want write function take arguments , handler<e> object. after doing computation based on other arguments, need return result on handler object.
to explain better, giving example:
public void getplaces(latlong latlong, int redius, collection<placetype> places) { if(redius <= 0 || redius > 50000) { throw new illegalaccesserror("redis can 0 50000 meters only"); } string uri = string.format(google_place_api_uri, latlong.getlatitude(), latlong.getlongitude(), redius, project_api_key, joiner.on("|").join(places)); httpclientrequest request = httpclient.getabs(uri, response ->{ logger.info("received response status code={} message={}", response.statuscode(), response.statusmessage()); response.bodyhandler( buffer -> { jsonobject result = buffer.tojsonobject(); string nextpagetoken = result.getstring("next_page_token"); jsonarray resultarray = result.getjsonarray("results"); system.out.println("nextpagetoken="+nextpagetoken+" result="+resultarray); }); }).settimeout(30000); request.exceptionhandler(e -> { logger.error("caught exception while making request google place apis. error message={} e=", e.getmessage(), e); }); request.end(); } public void getplaces(latlong latlong, int redius, collection<placetype> places, handler<jsonobject> response) { // complete using above function getplaces(latlong, redius, places); }
i'm not sure understand need, guess want call handler result of computation. code should want:
public void getplaces(latlong latlong, int redius, collection<placetype> places, handler<jsonobject> handler) { if(redius <= 0 || redius > 50000) { throw new illegalaccesserror("redis can 0 50000 meters only"); } string uri = string.format(google_place_api_uri, latlong.getlatitude(), latlong.getlongitude(), redius, project_api_key, joiner.on("|").join(places)); httpclientrequest request = httpclient.getabs(uri, response ->{ logger.info("received response status code={} message={}", response.statuscode(), response.statusmessage()); response.bodyhandler( buffer -> { jsonobject result = buffer.tojsonobject(); string nextpagetoken = result.getstring("next_page_token"); jsonarray resultarray = result.getjsonarray("results"); system.out.println("nextpagetoken="+nextpagetoken+" result="+resultarray); handler.handle(result); // call result handler }); }).settimeout(30000); request.exceptionhandler(e -> { logger.error("caught exception while making request google place apis. error message={} e=", e.getmessage(), e); }); request.end(); } hope help.
Comments
Post a Comment