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

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

Issue 2438613002: Provide an API to dart:developer to control the web server hosting the Service Protocol (Closed)
Patch Set: disable the auth token until we announce the breaking change Created 4 years, 1 month 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
OLDNEW
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"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 return &__service_bin_resources_[0]; 84 return &__service_bin_resources_[0];
85 } 85 }
86 86
87 DISALLOW_ALLOCATION(); 87 DISALLOW_ALLOCATION();
88 DISALLOW_IMPLICIT_CONSTRUCTORS(Resources); 88 DISALLOW_IMPLICIT_CONSTRUCTORS(Resources);
89 }; 89 };
90 90
91 91
92 void NotifyServerState(Dart_NativeArguments args) { 92 void NotifyServerState(Dart_NativeArguments args) {
93 Dart_EnterScope(); 93 Dart_EnterScope();
94 const char* ip_chars; 94 const char* uri_chars;
95 Dart_Handle ip_arg = Dart_GetNativeArgument(args, 0); 95 Dart_Handle uri_arg = Dart_GetNativeArgument(args, 0);
96 if (Dart_IsError(ip_arg)) { 96 if (Dart_IsError(uri_arg)) {
97 VmService::SetServerIPAndPort("", 0); 97 VmService::SetServerAddress("");
98 Dart_ExitScope(); 98 Dart_ExitScope();
99 return; 99 return;
100 } 100 }
101 Dart_Handle result = Dart_StringToCString(ip_arg, &ip_chars); 101 Dart_Handle result = Dart_StringToCString(uri_arg, &uri_chars);
102 if (Dart_IsError(result)) { 102 if (Dart_IsError(result)) {
103 VmService::SetServerIPAndPort("", 0); 103 VmService::SetServerAddress("");
104 Dart_ExitScope(); 104 Dart_ExitScope();
105 return; 105 return;
106 } 106 }
107 Dart_Handle port_arg = Dart_GetNativeArgument(args, 1); 107 VmService::SetServerAddress(uri_chars);
108 if (Dart_IsError(port_arg)) {
109 VmService::SetServerIPAndPort("", 0);
110 Dart_ExitScope();
111 return;
112 }
113 int64_t port = DartUtils::GetInt64ValueCheckRange(port_arg, 0, 65535);
114 VmService::SetServerIPAndPort(ip_chars, port);
115 Dart_ExitScope(); 108 Dart_ExitScope();
116 } 109 }
117 110
118 111
119 static void Shutdown(Dart_NativeArguments args) { 112 static void Shutdown(Dart_NativeArguments args) {
120 // NO-OP. 113 // NO-OP.
121 } 114 }
122 115
123 116
124 struct VmServiceIONativeEntry { 117 struct VmServiceIONativeEntry {
125 const char* name; 118 const char* name;
126 int num_arguments; 119 int num_arguments;
127 Dart_NativeFunction function; 120 Dart_NativeFunction function;
128 }; 121 };
129 122
130 123
131 static VmServiceIONativeEntry _VmServiceIONativeEntries[] = { 124 static VmServiceIONativeEntry _VmServiceIONativeEntries[] = {
132 {"VMServiceIO_NotifyServerState", 2, NotifyServerState}, 125 {"VMServiceIO_NotifyServerState", 1, NotifyServerState},
133 {"VMServiceIO_Shutdown", 0, Shutdown }, 126 {"VMServiceIO_Shutdown", 0, Shutdown },
134 }; 127 };
135 128
136 129
137 static Dart_NativeFunction VmServiceIONativeResolver(Dart_Handle name, 130 static Dart_NativeFunction VmServiceIONativeResolver(Dart_Handle name,
138 int num_arguments, 131 int num_arguments,
139 bool* auto_setup_scope) { 132 bool* auto_setup_scope) {
140 const char* function_name = NULL; 133 const char* function_name = NULL;
141 Dart_Handle result = Dart_StringToCString(name, &function_name); 134 Dart_Handle result = Dart_StringToCString(name, &function_name);
142 ASSERT(!Dart_IsError(result)); 135 ASSERT(!Dart_IsError(result));
143 ASSERT(function_name != NULL); 136 ASSERT(function_name != NULL);
144 *auto_setup_scope = true; 137 *auto_setup_scope = true;
145 intptr_t n = 138 intptr_t n =
146 sizeof(_VmServiceIONativeEntries) / sizeof(_VmServiceIONativeEntries[0]); 139 sizeof(_VmServiceIONativeEntries) / sizeof(_VmServiceIONativeEntries[0]);
147 for (intptr_t i = 0; i < n; i++) { 140 for (intptr_t i = 0; i < n; i++) {
148 VmServiceIONativeEntry entry = _VmServiceIONativeEntries[i]; 141 VmServiceIONativeEntry entry = _VmServiceIONativeEntries[i];
149 if ((strcmp(function_name, entry.name) == 0) && 142 if ((strcmp(function_name, entry.name) == 0) &&
150 (num_arguments == entry.num_arguments)) { 143 (num_arguments == entry.num_arguments)) {
151 return entry.function; 144 return entry.function;
152 } 145 }
153 } 146 }
154 return NULL; 147 return NULL;
155 } 148 }
156 149
157 150
158 const char* VmService::error_msg_ = NULL; 151 const char* VmService::error_msg_ = NULL;
159 char VmService::server_ip_[kServerIpStringBufferSize]; 152 char VmService::server_uri_[kServerUriStringBufferSize];
160 intptr_t VmService::server_port_ = 0;
161 153
162 154
163 bool VmService::LoadForGenPrecompiled() { 155 bool VmService::LoadForGenPrecompiled() {
164 Dart_Handle result; 156 Dart_Handle result;
165 Dart_SetLibraryTagHandler(LibraryTagHandler); 157 Dart_SetLibraryTagHandler(LibraryTagHandler);
166 Dart_Handle library = LoadLibrary(kVMServiceIOLibraryScriptResourceName); 158 Dart_Handle library = LoadLibrary(kVMServiceIOLibraryScriptResourceName);
167 ASSERT(library != Dart_Null()); 159 ASSERT(library != Dart_Null());
168 SHUTDOWN_ON_ERROR(library); 160 SHUTDOWN_ON_ERROR(library);
169 result = Dart_SetNativeResolver(library, VmServiceIONativeResolver, NULL); 161 result = Dart_SetNativeResolver(library, VmServiceIONativeResolver, NULL);
170 SHUTDOWN_ON_ERROR(result); 162 SHUTDOWN_ON_ERROR(result);
171 result = Dart_FinalizeLoading(false); 163 result = Dart_FinalizeLoading(false);
172 SHUTDOWN_ON_ERROR(result); 164 SHUTDOWN_ON_ERROR(result);
173 return true; 165 return true;
174 } 166 }
175 167
176 168
177 bool VmService::Setup(const char* server_ip, 169 bool VmService::Setup(const char* server_ip,
178 intptr_t server_port, 170 intptr_t server_port,
179 bool running_precompiled, 171 bool running_precompiled,
180 bool dev_mode_server) { 172 bool dev_mode_server) {
181 Dart_Isolate isolate = Dart_CurrentIsolate(); 173 Dart_Isolate isolate = Dart_CurrentIsolate();
182 ASSERT(isolate != NULL); 174 ASSERT(isolate != NULL);
183 SetServerIPAndPort("", 0); 175 SetServerAddress("");
184 176
185 Dart_Handle result; 177 Dart_Handle result;
186 178
187 // Prepare builtin and its dependent libraries for use to resolve URIs. 179 // Prepare builtin and its dependent libraries for use to resolve URIs.
188 // Set up various closures, e.g: printing, timers etc. 180 // Set up various closures, e.g: printing, timers etc.
189 // Set up 'package root' for URI resolution. 181 // Set up 'package root' for URI resolution.
190 result = DartUtils::PrepareForScriptLoading(true, false); 182 result = DartUtils::PrepareForScriptLoading(true, false);
191 SHUTDOWN_ON_ERROR(result); 183 SHUTDOWN_ON_ERROR(result);
192 184
193 if (running_precompiled) { 185 if (running_precompiled) {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 SHUTDOWN_ON_ERROR(field_name); 275 SHUTDOWN_ON_ERROR(field_name);
284 return true; 276 return true;
285 } 277 }
286 278
287 279
288 const char* VmService::GetErrorMessage() { 280 const char* VmService::GetErrorMessage() {
289 return (error_msg_ == NULL) ? "No error." : error_msg_; 281 return (error_msg_ == NULL) ? "No error." : error_msg_;
290 } 282 }
291 283
292 284
293 void VmService::SetServerIPAndPort(const char* ip, intptr_t port) { 285 void VmService::SetServerAddress(const char* server_uri) {
294 if (ip == NULL) { 286 if (server_uri == NULL) {
295 ip = ""; 287 server_uri = "";
296 } 288 }
297 strncpy(server_ip_, ip, kServerIpStringBufferSize); 289 strncpy(server_uri_, server_uri, kServerUriStringBufferSize);
298 server_ip_[kServerIpStringBufferSize - 1] = '\0'; 290 server_uri_[kServerUriStringBufferSize - 1] = '\0';
siva 2016/10/21 16:15:06 if strlen(server_uri) is > kServerUriStringBufferS
299 server_port_ = port;
300 } 291 }
301 292
302 293
303 Dart_Handle VmService::GetSource(const char* name) { 294 Dart_Handle VmService::GetSource(const char* name) {
304 const intptr_t kBufferSize = 512; 295 const intptr_t kBufferSize = 512;
305 char buffer[kBufferSize]; 296 char buffer[kBufferSize];
306 snprintf(&buffer[0], kBufferSize-1, "%s/%s", kLibrarySourceNamePrefix, name); 297 snprintf(&buffer[0], kBufferSize-1, "%s/%s", kLibrarySourceNamePrefix, name);
307 const char* vmservice_source = NULL; 298 const char* vmservice_source = NULL;
308 int r = Resources::ResourceLookup(buffer, &vmservice_source); 299 int r = Resources::ResourceLookup(buffer, &vmservice_source);
309 if (r == Resources::kNoSuchInstance) { 300 if (r == Resources::kNoSuchInstance) {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 Dart_Handle source = GetSource(url_string); 358 Dart_Handle source = GetSource(url_string);
368 if (Dart_IsError(source)) { 359 if (Dart_IsError(source)) {
369 return source; 360 return source;
370 } 361 }
371 return Dart_LoadSource(library, url, Dart_Null(), source, 0, 0); 362 return Dart_LoadSource(library, url, Dart_Null(), source, 0, 0);
372 } 363 }
373 364
374 365
375 } // namespace bin 366 } // namespace bin
376 } // namespace dart 367 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698