2017-02-02 14 views
1

Я пытаюсь отменить ожидающие запросы плитки, используя следующий код на сервере OSM:Есть ли способ отменить ожидающие запросы на черепицу?

NetworkManager netMgr = NetworkManager.getInstance(); 
Enumeration connections = netMgr.enumurateQueue(); 
while (connections.hasMoreElements()) { 
    ConnectionRequest connection = (ConnectionRequest)connections.nextElement(); 
    if (connection.getUrl().indexOf("osm_tiles") > 0) { 
     connection.kill(); 
    } 
} 

Я также попытался перечисляя с netManager.killAndWait (соединение).

Я также попробовал netMgr.shutdownAsync() с запуском() и не смог.

Во всех случаях последующие вызовы отправляют запрос менеджеру сети.

ответ

0

Убить это эффективно, что приведет к сбою запроса, и это должно быть выполнено с помощью базовой реализации. Я предполагаю, что MapComponent не обрабатывает его должным образом, и это распространяется вперед, что является проблематичным.

Поскольку мы сосредоточили нашу работу на родных картах, продвигающихся вперед, я не уверен, что это что-то исправить в ближайшем будущем. Правильная вещь - следить за логикой обработки ошибок и правильно обрабатывать случай отмены в пределах MapComponent. Если вы в состоянии сделать это в Codename One, вы можете submit a pull request.

+0

Я взгляну на него и вернусь к вам с решением. –

+0

Замена конструктора в ProxyHttpTile –

0

Этот конструктор замены для ProxyHttpTile должен устранить проблемы, связанные с отменой запроса сетевой плитки.

public ProxyHttpTile(Dimension tileSize, BoundingBox bbox, String url) { 
    super(tileSize, bbox, null); 
    String _url = url; 
    String cacheId = url.substring(url.indexOf(":") + 1); 
    cacheId = StringUtil.replaceAll(cacheId, "\\", "_"); 
    cacheId = StringUtil.replaceAll(cacheId, "/", "_"); 
    cacheId = StringUtil.replaceAll(cacheId, ".", "_"); 
    cacheId = StringUtil.replaceAll(cacheId, "?", "_"); 
    cacheId = StringUtil.replaceAll(cacheId, "&", "_"); 

    ImageDownloadService.createImageToStorage(url, new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent evt) { 
      NetworkEvent ne = (NetworkEvent) evt; 
      if (ne.getError() == null) {             // Test for exception 
       if (ne.getProgressType() == NetworkEvent.PROGRESS_TYPE_COMPLETED) {  // Test for completion 
        Image i = (Image) ne.getMetaData(); 
        i.lock(); 
        _tile = new Tile(ProxyHttpTile.this.dimension(), 
          ProxyHttpTile.this.getBoundingBox(), 
          i); 
        ProxyHttpTile.this.fireReady(); 
       }                   // 
      }                    // 
     } 
    }, cacheId, true); 
} 
+0

Можете ли вы записать это как запрос на растяжение, чтобы мы могли интегрировать его с надлежащей атрибуцией? –

 Смежные вопросы

  • Нет связанных вопросов^_^