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

Side by Side Diff: runtime/bin/main.cc

Issue 2715253002: VM: remove service_object_patch.dart and all associated code. (Closed)
Patch Set: Created 3 years, 9 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 unified diff | Download patch
« no previous file with comments | « runtime/bin/io_sources.gypi ('k') | runtime/bin/service_object_patch.dart » ('j') | 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 #include <stdlib.h> 5 #include <stdlib.h>
6 #include <string.h> 6 #include <string.h>
7 #include <stdio.h> 7 #include <stdio.h>
8 8
9 #include "include/dart_api.h" 9 #include "include/dart_api.h"
10 #include "include/dart_tools_api.h" 10 #include "include/dart_tools_api.h"
(...skipping 1138 matching lines...) Expand 10 before | Expand all | Expand 10 after
1149 snprintf(buffer, len, kFormat, script_name, func_name); 1149 snprintf(buffer, len, kFormat, script_name, func_name);
1150 return buffer; 1150 return buffer;
1151 } 1151 }
1152 1152
1153 static void ShutdownIsolate(void* callback_data) { 1153 static void ShutdownIsolate(void* callback_data) {
1154 IsolateData* isolate_data = reinterpret_cast<IsolateData*>(callback_data); 1154 IsolateData* isolate_data = reinterpret_cast<IsolateData*>(callback_data);
1155 delete isolate_data; 1155 delete isolate_data;
1156 } 1156 }
1157 1157
1158 1158
1159 static const char* InternalJsonRpcError(Dart_Handle error) {
1160 TextBuffer buffer(128);
1161 buffer.Printf(
1162 "{\"code\":-32603,"
1163 "\"message\":\"Internal error\","
1164 "\"details\": \"%s\"}",
1165 Dart_GetError(error));
1166 return buffer.Steal();
1167 }
1168
1169
1170 class DartScope {
1171 public:
1172 DartScope() { Dart_EnterScope(); }
1173 ~DartScope() { Dart_ExitScope(); }
1174 };
1175
1176
1177 static bool ServiceGetIOHandler(const char* method,
1178 const char** param_keys,
1179 const char** param_values,
1180 intptr_t num_params,
1181 void* user_data,
1182 const char** response) {
1183 DartScope scope;
1184 // TODO(ajohnsen): Store the library/function in isolate data or user_data.
1185 Dart_Handle dart_io_str = Dart_NewStringFromCString("dart:io");
1186 if (Dart_IsError(dart_io_str)) {
1187 *response = InternalJsonRpcError(dart_io_str);
1188 return false;
1189 }
1190
1191 Dart_Handle io_lib = Dart_LookupLibrary(dart_io_str);
1192 if (Dart_IsError(io_lib)) {
1193 *response = InternalJsonRpcError(io_lib);
1194 return false;
1195 }
1196
1197 Dart_Handle handler_function_name =
1198 Dart_NewStringFromCString("_serviceObjectHandler");
1199 if (Dart_IsError(handler_function_name)) {
1200 *response = InternalJsonRpcError(handler_function_name);
1201 return false;
1202 }
1203
1204 // TODO(johnmccutchan): paths is no longer used. Update the io
1205 // _serviceObjectHandler function to use json rpc.
1206 Dart_Handle paths = Dart_NewList(0);
1207 Dart_Handle keys = Dart_NewList(num_params);
1208 Dart_Handle values = Dart_NewList(num_params);
1209 for (int i = 0; i < num_params; i++) {
1210 Dart_ListSetAt(keys, i, Dart_NewStringFromCString(param_keys[i]));
1211 Dart_ListSetAt(values, i, Dart_NewStringFromCString(param_values[i]));
1212 }
1213 Dart_Handle args[] = {paths, keys, values};
1214 Dart_Handle result = Dart_Invoke(io_lib, handler_function_name, 3, args);
1215 if (Dart_IsError(result)) {
1216 *response = InternalJsonRpcError(result);
1217 return false;
1218 }
1219
1220 const char* json;
1221 result = Dart_StringToCString(result, &json);
1222 if (Dart_IsError(result)) {
1223 *response = InternalJsonRpcError(result);
1224 return false;
1225 }
1226 *response = strdup(json);
1227 return true;
1228 }
1229
1230
1231 static const char* kStdoutStreamId = "Stdout"; 1159 static const char* kStdoutStreamId = "Stdout";
1232 static const char* kStderrStreamId = "Stderr"; 1160 static const char* kStderrStreamId = "Stderr";
1233 1161
1234 1162
1235 static bool ServiceStreamListenCallback(const char* stream_id) { 1163 static bool ServiceStreamListenCallback(const char* stream_id) {
1236 if (strcmp(stream_id, kStdoutStreamId) == 0) { 1164 if (strcmp(stream_id, kStdoutStreamId) == 0) {
1237 SetCaptureStdout(true); 1165 SetCaptureStdout(true);
1238 return true; 1166 return true;
1239 } else if (strcmp(stream_id, kStderrStreamId) == 0) { 1167 } else if (strcmp(stream_id, kStderrStreamId) == 0) {
1240 SetCaptureStderr(true); 1168 SetCaptureStderr(true);
(...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after
1694 init_params.get_service_assets = GetVMServiceAssetsArchiveCallback; 1622 init_params.get_service_assets = GetVMServiceAssetsArchiveCallback;
1695 1623
1696 char* error = Dart_Initialize(&init_params); 1624 char* error = Dart_Initialize(&init_params);
1697 if (error != NULL) { 1625 if (error != NULL) {
1698 EventHandler::Stop(); 1626 EventHandler::Stop();
1699 Log::PrintErr("VM initialization failed: %s\n", error); 1627 Log::PrintErr("VM initialization failed: %s\n", error);
1700 free(error); 1628 free(error);
1701 Platform::Exit(kErrorExitCode); 1629 Platform::Exit(kErrorExitCode);
1702 } 1630 }
1703 1631
1704 Dart_RegisterIsolateServiceRequestCallback("getIO", &ServiceGetIOHandler,
1705 NULL);
1706 Dart_SetServiceStreamCallbacks(&ServiceStreamListenCallback, 1632 Dart_SetServiceStreamCallbacks(&ServiceStreamListenCallback,
1707 &ServiceStreamCancelCallback); 1633 &ServiceStreamCancelCallback);
1708 Dart_SetFileModifiedCallback(&FileModifiedCallback); 1634 Dart_SetFileModifiedCallback(&FileModifiedCallback);
1709 1635
1710 // Run the main isolate until we aren't told to restart. 1636 // Run the main isolate until we aren't told to restart.
1711 while (RunMainIsolate(script_name, &dart_options)) { 1637 while (RunMainIsolate(script_name, &dart_options)) {
1712 Log::PrintErr("Restarting VM\n"); 1638 Log::PrintErr("Restarting VM\n");
1713 } 1639 }
1714 1640
1715 // Terminate process exit-code handler. 1641 // Terminate process exit-code handler.
(...skipping 29 matching lines...) Expand all
1745 Platform::Exit(Process::GlobalExitCode()); 1671 Platform::Exit(Process::GlobalExitCode());
1746 } 1672 }
1747 1673
1748 } // namespace bin 1674 } // namespace bin
1749 } // namespace dart 1675 } // namespace dart
1750 1676
1751 int main(int argc, char** argv) { 1677 int main(int argc, char** argv) {
1752 dart::bin::main(argc, argv); 1678 dart::bin::main(argc, argv);
1753 UNREACHABLE(); 1679 UNREACHABLE();
1754 } 1680 }
OLDNEW
« no previous file with comments | « runtime/bin/io_sources.gypi ('k') | runtime/bin/service_object_patch.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698