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 #ifndef VM_JSON_STREAM_H_ | 5 #ifndef VM_JSON_STREAM_H_ |
6 #define VM_JSON_STREAM_H_ | 6 #define VM_JSON_STREAM_H_ |
7 | 7 |
8 #include "include/dart_api.h" // for Dart_Port | 8 #include "include/dart_api.h" // for Dart_Port |
9 #include "platform/text_buffer.h" | 9 #include "platform/text_buffer.h" |
10 #include "vm/allocation.h" | 10 #include "vm/allocation.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 kInternalError = -32603, | 46 kInternalError = -32603, |
47 | 47 |
48 kExtensionError = -32000, | 48 kExtensionError = -32000, |
49 | 49 |
50 kFeatureDisabled = 100, | 50 kFeatureDisabled = 100, |
51 kCannotAddBreakpoint = 102, | 51 kCannotAddBreakpoint = 102, |
52 kStreamAlreadySubscribed = 103, | 52 kStreamAlreadySubscribed = 103, |
53 kStreamNotSubscribed = 104, | 53 kStreamNotSubscribed = 104, |
54 kIsolateMustBeRunnable = 105, | 54 kIsolateMustBeRunnable = 105, |
55 kIsolateMustBePaused = 106, | 55 kIsolateMustBePaused = 106, |
56 kIsolateIsReloading = 107, | 56 |
| 57 // Experimental (used in private rpcs). |
| 58 kIsolateIsReloading = 1000, |
| 59 kFileSystemAlreadyExists = 1001, |
| 60 kFileSystemDoesNotExist = 1002, |
| 61 kFileDoesNotExist = 1003, |
57 }; | 62 }; |
58 | 63 |
59 // Expected that user_data is a JSONStream*. | 64 // Expected that user_data is a JSONStream*. |
60 void AppendJSONStreamConsumer(Dart_StreamConsumer_State state, | 65 void AppendJSONStreamConsumer(Dart_StreamConsumer_State state, |
61 const char* stream_name, | 66 const char* stream_name, |
62 const uint8_t* buffer, | 67 const uint8_t* buffer, |
63 intptr_t buffer_length, | 68 intptr_t buffer_length, |
64 void* user_data); | 69 void* user_data); |
65 | 70 |
66 class JSONStream : ValueObject { | 71 class JSONStream : ValueObject { |
67 public: | 72 public: |
68 explicit JSONStream(intptr_t buf_size = 256); | 73 explicit JSONStream(intptr_t buf_size = 256); |
69 ~JSONStream(); | 74 ~JSONStream(); |
70 | 75 |
71 void Setup(Zone* zone, | 76 void Setup(Zone* zone, |
72 Dart_Port reply_port, | 77 Dart_Port reply_port, |
73 const Instance& seq, | 78 const Instance& seq, |
74 const String& method, | 79 const String& method, |
75 const Array& param_keys, | 80 const Array& param_keys, |
76 const Array& param_values); | 81 const Array& param_values, |
| 82 bool parameters_are_dart_objects = false); |
77 void SetupError(); | 83 void SetupError(); |
78 | 84 |
79 void PrintError(intptr_t code, const char* details_format, ...); | 85 void PrintError(intptr_t code, const char* details_format, ...); |
80 | 86 |
81 void PostReply(); | 87 void PostReply(); |
82 | 88 |
83 void set_id_zone(ServiceIdZone* id_zone) { | 89 void set_id_zone(ServiceIdZone* id_zone) { |
84 id_zone_ = id_zone; | 90 id_zone_ = id_zone; |
85 } | 91 } |
86 ServiceIdZone* id_zone() { | 92 ServiceIdZone* id_zone() { |
87 return id_zone_; | 93 return id_zone_; |
88 } | 94 } |
89 | 95 |
90 TextBuffer* buffer() { return &buffer_; } | 96 TextBuffer* buffer() { return &buffer_; } |
91 const char* ToCString() { return buffer_.buf(); } | 97 const char* ToCString() { return buffer_.buf(); } |
92 | 98 |
93 void Steal(const char** buffer, intptr_t* buffer_length); | 99 void Steal(const char** buffer, intptr_t* buffer_length); |
94 | 100 |
95 void set_reply_port(Dart_Port port); | 101 void set_reply_port(Dart_Port port); |
96 | 102 |
97 void SetParams(const char** param_keys, const char** param_values, | 103 void SetParams(const char** param_keys, const char** param_values, |
98 intptr_t num_params); | 104 intptr_t num_params); |
99 | 105 |
100 Dart_Port reply_port() const { return reply_port_; } | 106 Dart_Port reply_port() const { return reply_port_; } |
101 | 107 |
| 108 intptr_t NumObjectParameters() const; |
| 109 RawObject* GetObjectParameterKey(intptr_t i) const; |
| 110 RawObject* GetObjectParameterValue(intptr_t i) const; |
| 111 RawObject* LookupObjectParam(const char* key) const; |
| 112 |
102 intptr_t num_params() const { return num_params_; } | 113 intptr_t num_params() const { return num_params_; } |
103 const char* GetParamKey(intptr_t i) const { | 114 const char* GetParamKey(intptr_t i) const { |
104 return param_keys_[i]; | 115 return param_keys_[i]; |
105 } | 116 } |
106 const char* GetParamValue(intptr_t i) const { | 117 const char* GetParamValue(intptr_t i) const { |
107 return param_values_[i]; | 118 return param_values_[i]; |
108 } | 119 } |
109 | 120 |
110 const char* LookupParam(const char* key) const; | 121 const char* LookupParam(const char* key) const; |
111 | 122 |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 // Debug only fatal assertion. | 231 // Debug only fatal assertion. |
221 static void EnsureIntegerIsRepresentableInJavaScript(int64_t i); | 232 static void EnsureIntegerIsRepresentableInJavaScript(int64_t i); |
222 | 233 |
223 intptr_t open_objects_; | 234 intptr_t open_objects_; |
224 TextBuffer buffer_; | 235 TextBuffer buffer_; |
225 // Default service id zone. | 236 // Default service id zone. |
226 RingServiceIdZone default_id_zone_; | 237 RingServiceIdZone default_id_zone_; |
227 ServiceIdZone* id_zone_; | 238 ServiceIdZone* id_zone_; |
228 Dart_Port reply_port_; | 239 Dart_Port reply_port_; |
229 Instance* seq_; | 240 Instance* seq_; |
| 241 Array* parameter_keys_; |
| 242 Array* parameter_values_; |
230 const char* method_; | 243 const char* method_; |
231 const char** param_keys_; | 244 const char** param_keys_; |
232 const char** param_values_; | 245 const char** param_values_; |
233 intptr_t num_params_; | 246 intptr_t num_params_; |
234 intptr_t offset_; | 247 intptr_t offset_; |
235 intptr_t count_; | 248 intptr_t count_; |
236 int64_t setup_time_micros_; | 249 int64_t setup_time_micros_; |
237 | 250 |
238 friend class JSONObject; | 251 friend class JSONObject; |
239 friend class JSONArray; | 252 friend class JSONArray; |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
413 | 426 |
414 friend class JSONObject; | 427 friend class JSONObject; |
415 | 428 |
416 DISALLOW_ALLOCATION(); | 429 DISALLOW_ALLOCATION(); |
417 DISALLOW_COPY_AND_ASSIGN(JSONArray); | 430 DISALLOW_COPY_AND_ASSIGN(JSONArray); |
418 }; | 431 }; |
419 | 432 |
420 } // namespace dart | 433 } // namespace dart |
421 | 434 |
422 #endif // VM_JSON_STREAM_H_ | 435 #endif // VM_JSON_STREAM_H_ |
OLD | NEW |