X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=map-server%2Faltos-mapd%2FAltosMapdClient.java;h=6c95da8f7b705b6d02df2ab7f683e434b6dd1f5d;hp=70ceae82275800e817bc1ec4e820c293458f2f55;hb=e7e1e805f1358052b33103a2ffdd4e9c435c8650;hpb=e7c0bcd945f8365e86e99b9d450f3a3389fa0e66 diff --git a/map-server/altos-mapd/AltosMapdClient.java b/map-server/altos-mapd/AltosMapdClient.java index 70ceae82..6c95da8f 100644 --- a/map-server/altos-mapd/AltosMapdClient.java +++ b/map-server/altos-mapd/AltosMapdClient.java @@ -26,7 +26,10 @@ public class AltosMapdClient extends Thread implements AltosMapStoreListener { private AltosJson request; private AltosJson reply; + private int http_status; + private void set_status(int status) { + http_status = status; reply.put("status", status); } @@ -66,62 +69,65 @@ public class AltosMapdClient extends Thread implements AltosMapStoreListener { try { request = AltosJson.fromInputStream(socket.getInputStream()); - double lat = request.get_double("lat", AltosLib.MISSING); - double lon = request.get_double("lon", AltosLib.MISSING); - int zoom = request.get_int("zoom", AltosLib.MISSING); - String addr = request.get_string("remote_addr", null); - - if (lat == AltosLib.MISSING || - lon == AltosLib.MISSING || - zoom == AltosLib.MISSING || - addr == null) - { + if (request == null) { set_status(400); - } else if (!AltosMapd.check_lat_lon(lat, lon)) { - set_status(403); /* Forbidden */ + System.out.printf("client failed %d\n", http_status); } else { - store_ready = new Semaphore(0); + double lat = request.get_double("lat", AltosLib.MISSING); + double lon = request.get_double("lon", AltosLib.MISSING); + int zoom = request.get_int("zoom", AltosLib.MISSING); + String addr = request.get_string("remote_addr", null); - System.out.printf("Fetching tile for %g %g %d\n", lat, lon, zoom); + if (lat == AltosLib.MISSING || + lon == AltosLib.MISSING || + zoom == AltosLib.MISSING || + addr == null) + { + set_status(400); + } else if (!AltosMapd.check_lat_lon(lat, lon, zoom)) { + set_status(403); /* Forbidden */ + } else { - AltosMapStore map_store = AltosMapStore.get(new AltosLatLon(lat, lon), - zoom, - AltosMapd.maptype, - AltosMapd.px_size, - AltosMapd.scale); - int status; + store_ready = new Semaphore(0); - if (map_store == null) { - System.out.printf("no store?\n"); - status = AltosMapTile.failed; - } else { - map_store.add_listener(this); + AltosMapStore map_store = AltosMapStore.get(new AltosLatLon(lat, lon), + zoom, + AltosMapd.maptype, + AltosMapd.px_size, + AltosMapd.scale); + int status; - System.out.printf("Waiting for tile\n"); + if (map_store == null) { + status = AltosMapTile.failed; + } else { + map_store.add_listener(this); - try { - store_ready.acquire(); - } catch (Exception ie) { - } + try { + store_ready.acquire(); + } catch (Exception ie) { + } - status = map_store.status(); - } + status = map_store.status(); + } - if (status == AltosMapTile.fetched || status == AltosMapTile.loaded) { - set_status(200); - set_file(map_store.file); - } else if (status == AltosMapTile.failed) { - set_status(404); - } else if (status == AltosMapTile.fetching) { - set_status(408); - } else if (status == AltosMapTile.bad_request) { - set_status(400); - } else if (status == AltosMapTile.forbidden) { - set_status(403); - } else { - set_status(400); + if (status == AltosMapTile.fetched || status == AltosMapTile.loaded) { + set_status(200); + set_file(map_store.file); + } else if (status == AltosMapTile.failed) { + set_status(404); + } else if (status == AltosMapTile.fetching) { + set_status(408); + } else if (status == AltosMapTile.bad_request) { + set_status(400); + } else if (status == AltosMapTile.forbidden) { + set_status(403); + } else { + set_status(400); + } } + System.out.printf("%s: %.6f %.6f %d status %d\n", + addr, lat, lon, zoom, http_status); } } catch (Exception e) { System.out.printf("client exception %s\n", e.toString()); @@ -140,7 +146,6 @@ public class AltosMapdClient extends Thread implements AltosMapStoreListener { socket.close(); } catch (IOException ie) { } - System.out.printf("client done\n"); } }