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

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

Issue 24471002: Initial GUI for review (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 3 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/observatory/packages/observatory/src/observatory/request_manager.dart
diff --git a/runtime/bin/vmservice/client/observatory/packages/observatory/src/observatory/request_manager.dart b/runtime/bin/vmservice/client/observatory/packages/observatory/src/observatory/request_manager.dart
new file mode 100644
index 0000000000000000000000000000000000000000..666388bad8dbd9ed89690d27b9fc0a10531edcbe
--- /dev/null
+++ b/runtime/bin/vmservice/client/observatory/packages/observatory/src/observatory/request_manager.dart
@@ -0,0 +1,60 @@
+part of observatory;
+
+/// A request response interceptor is called for each response.
+typedef void RequestResponseInterceptor();
+
+abstract class RequestManager extends Object with ObservableMixin {
+ ObservatoryApplication _application;
+ ObservatoryApplication get application => _application;
+ RequestResponseInterceptor interceptor;
+
+ /// The default request prefix is 127.0.0.1 on port 8181.
+ @observable String prefix = 'http://127.0.0.1:8181';
+ /// List of responses.
+ @observable List<Map> responses = toObservable([]);
+
+ /// 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