private static void switchContext(final TThread thread, final AsyncCallback<Void> callback) { Platform.postpone(() -> { setCurrentThread(thread); callback.complete(null); }); }
private static void sleep(long millis, final AsyncCallback<Void> callback) { final TThread current = currentThread(); int intMillis = millis < Integer.MAX_VALUE ? (int) millis : Integer.MAX_VALUE; SleepHandler handler = new SleepHandler(current, callback); handler.scheduleId = Platform.schedule(handler, intMillis); current.interruptHandler = handler; }
private void waitForChange(long timeLimit, AsyncCallback<Boolean> callback) { if (waitHandlers == null) { waitHandlers = Platform.createQueue(); } WaitHandler handler = new WaitHandler(callback); waitHandlers.add(handler); if (timeLimit > 0) { int timeout = Math.max(0, (int) (timeLimit - System.currentTimeMillis())); handler.timerId = Platform.schedule(handler, timeout); } else { handler.timerId = -1; } TThread.currentThread().interruptHandler = handler; }
public final void waitImpl(long timeout, int nanos, final AsyncCallback<Void> callback) { final NotifyListenerImpl listener = new NotifyListenerImpl(this, callback, monitor.count); monitor.notifyListeners.add(listener); TThread.currentThread().interruptHandler = listener; if (timeout > 0 || nanos > 0) { listener.timerId = Platform.schedule(listener, timeout >= Integer.MAX_VALUE ? Integer.MAX_VALUE : (int) timeout); } monitorExit(this, monitor.count); }
static void monitorEnterWait(final TObject o, final int count, final AsyncCallback<Void> callback) { final TThread thread = TThread.currentThread(); if (o.monitor == null) { o.monitor = new Monitor(); TThread.setCurrentThread(thread); o.monitor.count += count; callback.complete(null); return; } else if (o.monitor.owner == null) { o.monitor.owner = thread; TThread.setCurrentThread(thread); o.monitor.count += count; callback.complete(null); return; } o.monitor.enteringThreads.add(() -> { TThread.setCurrentThread(thread); o.monitor.owner = thread; o.monitor.count += count; callback.complete(null); }); }
private void performRequest(AsyncCallback<Boolean> callback) { xhr.setOnReadyStateChange(() -> { if (xhr.getReadyState() != XMLHttpRequest.DONE) { return; } responseCode = xhr.getStatus(); responseMessage = xhr.getStatusText(); if (responseCode == 0) { responseCode = -1; } Int8Array array = Int8Array.create((ArrayBuffer) xhr.getResponse()); byte[] bytes = new byte[array.getLength()]; for (int i = 0; i < bytes.length; ++i) { bytes[i] = array.get(i); } ByteArrayInputStream stream = new ByteArrayInputStream(bytes); parseHeaders(xhr.getAllResponseHeaders()); int responseGroup = responseCode / 100; if (responseGroup == 4 || responseGroup == 5) { errorStream = stream; inputStream = null; } else { inputStream = stream; errorStream = null; } callback.complete(Boolean.TRUE);
private static void showModal(PopupContent content, final AsyncCallback<Void> callback) { final Popup popup = new Popup(Templates.create(content)); popup.wrapper = document.createElement("div"); document.getBody().appendChild(popup.wrapper); popup.component = Templates.bind(popup, popup.wrapper); popup.callback = callback; content.setDelegate(popup::close); } }
private void send(AsyncCallback<ResponseImpl> callback) { XMLHttpRequest xhr = XMLHttpRequest.create(); xhr.open(method.name(), url); for (Map.Entry<String, String> header : headers.entrySet()) { xhr.setRequestHeader(header.getKey(), header.getValue()); } xhr.setRequestHeader("Content-Type", "application/json"); xhr.setRequestHeader("Accept", "application/json"); xhr.onComplete(() -> { ResponseImpl response = new ResponseImpl(); response.status = xhr.getStatus(); response.textContent = xhr.getResponseText(); parseResponseHeaders(response.headers, xhr.getAllResponseHeaders()); if (xhr.getStatus() / 100 == 2) { String text = xhr.getResponseText(); if (text != null && !text.isEmpty()) { JsonParseResult parseResult = parseJson(text); response.validJson = parseResult.isSuccess(); if (response.validJson) { response.content = parseResult.getNode(); } else { response.defaultAction = () -> { throw new JsonParseException(text); }; } } } else { response.defaultAction = () -> { throw new HttpStatusException(response.status, xhr.getStatusText()); };