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

Side by Side Diff: sdk/lib/developer/extension.dart

Issue 1537523002: Add dart:developer.postEvent for posting events to the service protocol from Dart code (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years 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 unified diff | Download patch
« no previous file with comments | « runtime/vm/service_event.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart.developer; 5 part of dart.developer;
6 6
7 class ServiceExtensionResponse { 7 class ServiceExtensionResponse {
8 final String _result; 8 final String _result;
9 final int _errorCode; 9 final int _errorCode;
10 final String _errorDetail; 10 final String _errorDetail;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 throw new ArgumentError('Extension already registered: $method'); 102 throw new ArgumentError('Extension already registered: $method');
103 } 103 }
104 if (handler is! ServiceExtensionHandler) { 104 if (handler is! ServiceExtensionHandler) {
105 throw new ArgumentError.value(handler, 105 throw new ArgumentError.value(handler,
106 'handler', 106 'handler',
107 'Must be a ServiceExtensionHandler'); 107 'Must be a ServiceExtensionHandler');
108 } 108 }
109 _registerExtension(method, handler); 109 _registerExtension(method, handler);
110 } 110 }
111 111
112 /// Post an event of [eventKind] with payload of [eventData] to the `Extension`
113 /// event stream.
114 void postEvent(String eventKind, Map eventData) {
115 if (eventKind is! String) {
116 throw new ArgumentError.value(eventKind,
117 'eventKind',
118 'Must be a String');
119 }
120 if (eventData is! Map) {
121 throw new ArgumentError.value(eventData,
122 'eventData',
123 'Must be a Map');
124 }
125 String eventDataAsString = JSON.encode(eventData);
126 _postEvent(eventKind, eventDataAsString);
127 }
128
129 external _postEvent(String eventKind, String eventData);
130
112 // Both of these functions are written inside C++ to avoid updating the data 131 // Both of these functions are written inside C++ to avoid updating the data
113 // structures in Dart, getting an OOB, and observing stale state. Do not move 132 // structures in Dart, getting an OOB, and observing stale state. Do not move
114 // these into Dart code unless you can ensure that the operations will can be 133 // these into Dart code unless you can ensure that the operations will can be
115 // done atomically. Native code lives in vm/isolate.cc- 134 // done atomically. Native code lives in vm/isolate.cc-
116 // LookupServiceExtensionHandler and RegisterServiceExtensionHandler. 135 // LookupServiceExtensionHandler and RegisterServiceExtensionHandler.
117 external ServiceExtensionHandler _lookupExtension(String method); 136 external ServiceExtensionHandler _lookupExtension(String method);
118 external _registerExtension(String method, ServiceExtensionHandler handler); 137 external _registerExtension(String method, ServiceExtensionHandler handler);
OLDNEW
« no previous file with comments | « runtime/vm/service_event.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698