MapManager.java
Go to the documentation of this file.
00001 package com.github.rosjava.android_apps.make_a_map;
00002 
00003 import map_store.SaveMap;
00004 import map_store.SaveMapRequest;
00005 import map_store.SaveMapResponse;
00006 
00007 import org.ros.exception.RosRuntimeException;
00008 import org.ros.exception.ServiceNotFoundException;
00009 import org.ros.namespace.GraphName;
00010 import org.ros.namespace.NameResolver;
00011 import org.ros.node.AbstractNodeMain;
00012 import org.ros.node.ConnectedNode;
00013 import org.ros.node.service.ServiceClient;
00014 import org.ros.node.service.ServiceResponseListener;
00015 
00016 public class MapManager extends AbstractNodeMain {
00017 
00018         private ConnectedNode connectedNode;
00019         private ServiceResponseListener<SaveMapResponse> saveServiceResponseListener;
00020 
00021         private String mapName;
00022     private NameResolver nameResolver;
00023     private boolean nameResolverSet = false;
00024 
00025         public MapManager() {
00026                 mapName = "";
00027         }
00028         
00029         public void setMapName(String name) {
00030                 mapName = name;
00031         }
00032 
00033     public void setNameResolver(NameResolver newNameResolver) {
00034         nameResolver = newNameResolver;
00035         nameResolverSet = true;
00036     }
00037 
00038         public void setSaveService(
00039                         ServiceResponseListener<SaveMapResponse> saveServiceResponseListener) {
00040                 this.saveServiceResponseListener = saveServiceResponseListener;
00041         }
00042 
00043         public void saveMap() {
00044                 ServiceClient<SaveMapRequest, SaveMapResponse> saveMapClient;
00045                 if (connectedNode != null) {
00046                         try
00047             {
00048                 String srvName = "save_map";
00049                 if (nameResolverSet)
00050                 {
00051                     srvName = nameResolver.resolve(srvName).toString();
00052                 }
00053                 saveMapClient = connectedNode.newServiceClient(srvName, SaveMap._TYPE);
00054                         } catch (ServiceNotFoundException e) {
00055                                 try {
00056                                         Thread.sleep(1000L);
00057                                         return;
00058                                 } catch (Exception ex) {
00059                                 }
00060                                 throw new RosRuntimeException(e);
00061                         }
00062                         final SaveMapRequest request = saveMapClient.newMessage();
00063                         request.setMapName(mapName);
00064                         saveMapClient.call(request, saveServiceResponseListener);
00065                 }
00066         }
00067 
00068         @Override
00069         public GraphName getDefaultNodeName() {
00070                 return null;
00071         }
00072 
00073         public void onStart(final ConnectedNode connectedNode) {
00074                 this.connectedNode = connectedNode;
00075                 saveMap();
00076         }
00077 }


android_apps
Author(s): Daniel Stonier , Kazuto Murase
autogenerated on Fri Aug 28 2015 10:04:40