protected void updateSettings(Http2Settings settingsUpdate, Handler<AsyncResult<Void>> completionHandler) { Http2Settings current = handler.decoder().localSettings(); for (Map.Entry<Character, Long> entry : current.entrySet()) { Character key = entry.getKey(); if (Objects.equals(settingsUpdate.get(key), entry.getValue())) { settingsUpdate.remove(key); } } Handler<Void> pending = v -> { synchronized (Http2ConnectionBase.this) { localSettings.putAll(settingsUpdate); } if (completionHandler != null) { completionHandler.handle(Future.succeededFuture()); } }; updateSettingsHandlers.add(pending); handler.writeSettings(settingsUpdate).addListener(fut -> { if (!fut.isSuccess()) { synchronized (Http2ConnectionBase.this) { updateSettingsHandlers.remove(pending); } if (completionHandler != null) { completionHandler.handle(Future.failedFuture(fut.cause())); } } }); }
protected void updateSettings(Http2Settings settingsUpdate, Handler<AsyncResult<Void>> completionHandler) { Http2Settings current = handler.decoder().localSettings(); for (Map.Entry<Character, Long> entry : current.entrySet()) { Character key = entry.getKey(); if (Objects.equals(settingsUpdate.get(key), entry.getValue())) { settingsUpdate.remove(key); } } Handler<Void> pending = v -> { synchronized (Http2ConnectionBase.this) { localSettings.putAll(settingsUpdate); } if (completionHandler != null) { completionHandler.handle(Future.succeededFuture()); } }; updateSettingsHandlers.add(pending); handler.writeSettings(settingsUpdate).addListener(fut -> { if (!fut.isSuccess()) { synchronized (Http2ConnectionBase.this) { updateSettingsHandlers.remove(pending); } if (completionHandler != null) { completionHandler.handle(Future.failedFuture(fut.cause())); } } }); }