MapManager.java
Go to the documentation of this file.
00001 package com.github.rosjava.android_apps.map_nav;
00002 
00003 import android.content.Context;
00004 
00005 import com.github.rosjava.android_remocons.common_tools.apps.AppRemappings;
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 import world_canvas_msgs.ListMaps;
00017 import world_canvas_msgs.ListMapsRequest;
00018 import world_canvas_msgs.ListMapsResponse;
00019 import world_canvas_msgs.PublishMap;
00020 import world_canvas_msgs.PublishMapRequest;
00021 import world_canvas_msgs.PublishMapResponse;
00022 
00023 public class MapManager extends AbstractNodeMain {
00024 
00025         private ConnectedNode connectedNode;
00026         private String function;
00027         private ServiceResponseListener<ListMapsResponse> listServiceResponseListener;
00028         private ServiceResponseListener<PublishMapResponse> publishServiceResponseListener;
00029 
00030         private String mapId;
00031     private String listSrvName;
00032     private String pubSrvName;
00033     private NameResolver nameResolver;
00034     private boolean nameResolverSet = false;
00035         
00036         public MapManager(final Context context, final AppRemappings remaps) {
00037         // Apply remappings
00038         listSrvName = remaps.get(context.getString(R.string.list_maps_srv));
00039         pubSrvName = remaps.get(context.getString(R.string.publish_map_srv));
00040         }
00041         
00042         public void setMapId(String mapId) {
00043                 this.mapId = mapId;
00044         }
00045 
00046     public void setNameResolver(NameResolver newNameResolver) {
00047         nameResolver = newNameResolver;
00048         nameResolverSet = true;
00049     }
00050 
00051     public void setFunction(String function) {
00052                 this.function = function;
00053         }
00054         
00055         public void setListService(
00056                         ServiceResponseListener<ListMapsResponse> listServiceResponseListener) {
00057                 this.listServiceResponseListener = listServiceResponseListener;
00058         }
00059         
00060         public void setPublishService(
00061                         ServiceResponseListener<PublishMapResponse> publishServiceResponseListener) {
00062                 this.publishServiceResponseListener = publishServiceResponseListener;
00063         }
00064 
00065         public void listMaps() {
00066                 ServiceClient<ListMapsRequest, ListMapsResponse> listMapsClient;
00067                 try
00068         {
00069             if (nameResolverSet)
00070             {
00071                 listSrvName = nameResolver.resolve(listSrvName).toString();
00072             }
00073                         listMapsClient = connectedNode.newServiceClient(listSrvName, ListMaps._TYPE);
00074                 } catch (ServiceNotFoundException e) {
00075                           try {
00076                             Thread.sleep(1000L);
00077                             listMaps();
00078                             return;
00079                           } catch (Exception ex) {}
00080                         
00081                         e.printStackTrace();
00082                         throw new RosRuntimeException(e);
00083                 }
00084                 final ListMapsRequest request = listMapsClient.newMessage();
00085                 listMapsClient.call(request, listServiceResponseListener);
00086         }
00087         
00088         public void publishMap() {
00089                 ServiceClient<PublishMapRequest, PublishMapResponse> publishMapClient;
00090                 
00091                 try
00092         {
00093             if (nameResolverSet)
00094             {
00095                 pubSrvName = nameResolver.resolve(pubSrvName).toString();
00096             }
00097                         publishMapClient = connectedNode.newServiceClient(pubSrvName, PublishMap._TYPE);
00098                 } catch (ServiceNotFoundException e) {
00099                          try {
00100                             Thread.sleep(1000L);
00101                             listMaps();
00102                             return;
00103                           } catch (Exception ex) {}
00104                         throw new RosRuntimeException(e);
00105                 }
00106                 final PublishMapRequest request = publishMapClient.newMessage();
00107                 request.setMapId(mapId);
00108                 publishMapClient.call(request, publishServiceResponseListener);
00109         }
00110         
00111 
00112         
00113         @Override
00114         public GraphName getDefaultNodeName() {
00115                 return null;
00116         }
00117         
00118         public void onStart(final ConnectedNode connectedNode) {
00119                 this.connectedNode = connectedNode;
00120                 if (function.equals("list")) {
00121                         listMaps();
00122                 } else if (function.equals("publish")) {
00123                         publishMap();
00124                 }
00125         }
00126 }
00127 


android_apps
Author(s): Daniel Stonier , Kazuto Murase
autogenerated on Thu Jun 6 2019 21:11:28