Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1408)

Unified Diff: runtime/bin/vmservice/client/packages/observatory/src/observatory/request_manager.dart

Issue 24844002: Initial GUI for VM service (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/bin/vmservice/client/packages/observatory/src/observatory/request_manager.dart
diff --git a/runtime/bin/vmservice/client/packages/observatory/src/observatory/request_manager.dart b/runtime/bin/vmservice/client/packages/observatory/src/observatory/request_manager.dart
new file mode 100644
index 0000000000000000000000000000000000000000..a109eba4654b8d0eb6d621fe84f6cd198371c354
--- /dev/null
+++ b/runtime/bin/vmservice/client/packages/observatory/src/observatory/request_manager.dart
@@ -0,0 +1,64 @@
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+part of observatory;
+
+/// A request response interceptor is called for each response.
+typedef void RequestResponseInterceptor();
+
+abstract class RequestManager extends Object with ChangeNotifierMixin {
+ ObservatoryApplication _application;
+ ObservatoryApplication get application => _application;
+ RequestResponseInterceptor interceptor;
+
+ /// The default request prefix is 127.0.0.1 on port 8181.
+ @observable String get prefix => __$prefix; String __$prefix = 'http://127.0.0.1:8181'; set prefix(String value) { __$prefix = notifyPropertyChange(#prefix, __$prefix, value); }
+ /// List of responses.
+ @observable List<Map> get responses => __$responses; List<Map> __$responses = toObservable([]); set responses(List<Map> value) { __$responses = notifyPropertyChange(#responses, __$responses, value); }
+
+ /// Parse
+ void parseResponses(String responseString) {
+ var r = JSON.decode(responseString);
+ if (r is Map) {
+ setResponses([r]);
+ } else {
+ setResponses(r);
+ }
+ }
+
+ void setResponses(List<Map> r) {
+ responses = toObservable(r);
+ if (interceptor != null) {
+ interceptor();
+ }
+ }
+
+ void setResponseError(String error) {
+ setResponses([{
+ 'type': 'RequestError',
+ 'error': error
+ }]);
+ }
+
+ /// Request [requestString] from the VM service. Updates [responses].
+ /// Will trigger [interceptor] if one is set.
+ Future<Map> get(String requestString) {
+ request(requestString).then((responseString) {
+ parseResponses(responseString);
+ }).catchError((e) {
+ setResponseError(e.toString());
+ });
+ }
+
+ /// Abstract method. Given the [requestString], return a String in the
+ /// future which contains the reply from the VM service.
+ Future<String> request(String requestString);
+}
+
+
+class HttpRequestManager extends RequestManager {
+ Future<String> request(String requestString) {
+ return HttpRequest.getString(prefix + requestString);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698