Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 "bin/vmservice_impl.h" | 5 #include "bin/vmservice_impl.h" |
| 6 | 6 |
| 7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
| 8 | 8 |
| 9 #include "bin/builtin.h" | 9 #include "bin/builtin.h" |
| 10 #include "bin/dartutils.h" | 10 #include "bin/dartutils.h" |
| 11 #include "bin/isolate_data.h" | 11 #include "bin/isolate_data.h" |
| 12 #include "bin/platform.h" | |
| 12 #include "bin/thread.h" | 13 #include "bin/thread.h" |
| 14 #include "platform/json.h" | |
| 13 | 15 |
| 14 namespace dart { | 16 namespace dart { |
| 15 namespace bin { | 17 namespace bin { |
| 16 | 18 |
| 17 #define RETURN_ERROR_HANDLE(handle) \ | 19 #define RETURN_ERROR_HANDLE(handle) \ |
| 18 if (Dart_IsError(handle)) { \ | 20 if (Dart_IsError(handle)) { \ |
| 19 return handle; \ | 21 return handle; \ |
| 20 } | 22 } |
| 21 | 23 |
| 22 #define SHUTDOWN_ON_ERROR(handle) \ | 24 #define SHUTDOWN_ON_ERROR(handle) \ |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 79 static ResourcesEntry* ResourcesTable() { | 81 static ResourcesEntry* ResourcesTable() { |
| 80 return &__service_bin_resources_[0]; | 82 return &__service_bin_resources_[0]; |
| 81 } | 83 } |
| 82 | 84 |
| 83 DISALLOW_ALLOCATION(); | 85 DISALLOW_ALLOCATION(); |
| 84 DISALLOW_IMPLICIT_CONSTRUCTORS(Resources); | 86 DISALLOW_IMPLICIT_CONSTRUCTORS(Resources); |
| 85 }; | 87 }; |
| 86 | 88 |
| 87 const char* VmService::error_msg_ = NULL; | 89 const char* VmService::error_msg_ = NULL; |
| 88 | 90 |
| 91 static void* embedder_request_callback_user_data = reinterpret_cast<void*>(0x3); | |
| 92 | |
| 93 static const char* embedder_request_callback(const char* name, | |
| 94 const char** arguments, | |
| 95 intptr_t num_arguments, | |
| 96 const char** option_keys, | |
| 97 const char** option_values, | |
| 98 intptr_t num_options, | |
| 99 void* user_data) { | |
| 100 ASSERT(user_data == embedder_request_callback_user_data); | |
| 101 TextBuffer tb(256); | |
| 102 tb.AddString("{\"type\": \"Embedder\",\"value\":\"Standalone\"}"); | |
|
turnidge
2014/02/18 22:25:12
Shouldn't this be a root-level request?
Cutch
2014/02/18 22:34:10
I'm dropping these for now.
| |
| 103 return tb.Steal(); | |
| 104 } | |
| 105 | |
| 106 | |
| 107 static const char* embedder_os_callback(const char* name, | |
| 108 const char** arguments, | |
| 109 intptr_t num_arguments, | |
| 110 const char** option_keys, | |
| 111 const char** option_values, | |
| 112 intptr_t num_options, | |
| 113 void* user_data) { | |
| 114 TextBuffer tb(256); | |
| 115 tb.AddString("{\"type\": \"OS\", \"value\":\""); | |
| 116 tb.AddString(Platform::OperatingSystem()); | |
| 117 tb.AddString("\"}"); | |
| 118 return tb.Steal(); | |
| 119 } | |
| 120 | |
| 121 | |
| 89 bool VmService::Start(intptr_t server_port) { | 122 bool VmService::Start(intptr_t server_port) { |
| 90 bool r = _Start(server_port); | 123 bool r = _Start(server_port); |
| 91 if (!r) { | 124 if (!r) { |
| 92 return r; | 125 return r; |
| 93 } | 126 } |
| 127 // Register an embedder provided isolate request callback. | |
| 128 Dart_RegisterIsolateServiceRequestCallback( | |
| 129 "_embedder", | |
| 130 embedder_request_callback, | |
| 131 embedder_request_callback_user_data); | |
| 132 Dart_RegisterRootServiceRequestCallback("_os", embedder_os_callback, NULL); | |
| 94 // Start processing messages in a new thread. | 133 // Start processing messages in a new thread. |
| 95 dart::Thread::Start(ThreadMain, NULL); | 134 dart::Thread::Start(ThreadMain, NULL); |
| 96 return true; | 135 return true; |
| 97 } | 136 } |
| 98 | 137 |
| 99 | 138 |
| 100 bool VmService::_Start(intptr_t server_port) { | 139 bool VmService::_Start(intptr_t server_port) { |
| 101 ASSERT(Dart_CurrentIsolate() == NULL); | 140 ASSERT(Dart_CurrentIsolate() == NULL); |
| 102 Dart_Isolate isolate = Dart_GetServiceIsolate(NULL); | 141 Dart_Isolate isolate = Dart_GetServiceIsolate(NULL); |
| 103 if (isolate == NULL) { | 142 if (isolate == NULL) { |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 274 printf("Service exited with an error:\n%s\n", Dart_GetError(result)); | 313 printf("Service exited with an error:\n%s\n", Dart_GetError(result)); |
| 275 } | 314 } |
| 276 Dart_ExitScope(); | 315 Dart_ExitScope(); |
| 277 Dart_ExitIsolate(); | 316 Dart_ExitIsolate(); |
| 278 } | 317 } |
| 279 | 318 |
| 280 | 319 |
| 281 | 320 |
| 282 } // namespace bin | 321 } // namespace bin |
| 283 } // namespace dart | 322 } // namespace dart |
| OLD | NEW |