OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 INCLUDE_DART_TOOLS_API_H_ | 5 #ifndef INCLUDE_DART_TOOLS_API_H_ |
6 #define INCLUDE_DART_TOOLS_API_H_ | 6 #define INCLUDE_DART_TOOLS_API_H_ |
7 | 7 |
8 #include "include/dart_api.h" | 8 #include "include/dart_api.h" |
9 | 9 |
10 /** \mainpage Dart Tools Embedding API Reference | 10 /** \mainpage Dart Tools Embedding API Reference |
(...skipping 734 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
745 * ======= | 745 * ======= |
746 */ | 746 */ |
747 | 747 |
748 /** | 748 /** |
749 * A service request callback function. | 749 * A service request callback function. |
750 * | 750 * |
751 * These callbacks, registered by the embedder, are called when the VM receives | 751 * These callbacks, registered by the embedder, are called when the VM receives |
752 * a service request it can't handle and the service request command name | 752 * a service request it can't handle and the service request command name |
753 * matches one of the embedder registered handlers. | 753 * matches one of the embedder registered handlers. |
754 * | 754 * |
| 755 * The return value of the callback indicates whether the response |
| 756 * should be used as a regular result or an error result. |
| 757 * Specifically, if the callback returns true, a regular JSON-RPC |
| 758 * response is built in the following way: |
| 759 * |
| 760 * { |
| 761 * "jsonrpc": "2.0", |
| 762 * "result": <json_object>, |
| 763 * "id": <some sequence id>, |
| 764 * } |
| 765 * |
| 766 * If the callback returns false, a JSON-RPC error is built like this: |
| 767 * |
| 768 * { |
| 769 * "jsonrpc": "2.0", |
| 770 * "error": <json_object>, |
| 771 * "id": <some sequence id>, |
| 772 * } |
| 773 * |
755 * \param method The rpc method name. | 774 * \param method The rpc method name. |
756 * \param param_keys Service requests can have key-value pair parameters. The | 775 * \param param_keys Service requests can have key-value pair parameters. The |
757 * keys and values are flattened and stored in arrays. | 776 * keys and values are flattened and stored in arrays. |
758 * \param param_values The values associated with the keys. | 777 * \param param_values The values associated with the keys. |
759 * \param num_params The length of the param_keys and param_values arrays. | 778 * \param num_params The length of the param_keys and param_values arrays. |
760 * \param user_data The user_data pointer registered with this handler. | 779 * \param user_data The user_data pointer registered with this handler. |
| 780 * \param result A C string containing a valid JSON object. The returned |
| 781 * pointer will be freed by the VM by calling free. |
761 * | 782 * |
762 * \return Returns a C string containing a valid JSON object. The returned | 783 * \return True if the result is a regular JSON-RPC response, false if the |
763 * pointer will be freed by the VM by calling free. | 784 * result is a JSON-RPC error. |
764 */ | 785 */ |
765 typedef const char* (*Dart_ServiceRequestCallback)( | 786 typedef bool (*Dart_ServiceRequestCallback)( |
766 const char* method, | 787 const char* method, |
767 const char** param_keys, | 788 const char** param_keys, |
768 const char** param_values, | 789 const char** param_values, |
769 intptr_t num_params, | 790 intptr_t num_params, |
770 void* user_data); | 791 void* user_data, |
| 792 const char** json_object); |
771 | 793 |
772 | 794 |
773 /** | 795 /** |
774 * Register a Dart_ServiceRequestCallback to be called to handle | 796 * Register a Dart_ServiceRequestCallback to be called to handle |
775 * requests for the named rpc on a specific isolate. The callback will | 797 * requests for the named rpc on a specific isolate. The callback will |
776 * be invoked with the current isolate set to the request target. | 798 * be invoked with the current isolate set to the request target. |
777 * | 799 * |
778 * \param method The name of the method that this callback is responsible for. | 800 * \param method The name of the method that this callback is responsible for. |
779 * \param callback The callback to invoke. | 801 * \param callback The callback to invoke. |
780 * \param user_data The user data passed to the callback. | 802 * \param user_data The user data passed to the callback. |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1039 * \param start_recording See Dart_EmbedderTimelineStartRecording. | 1061 * \param start_recording See Dart_EmbedderTimelineStartRecording. |
1040 * \param stop_recording See Dart_EmbedderTimelineStopRecording. | 1062 * \param stop_recording See Dart_EmbedderTimelineStopRecording. |
1041 * | 1063 * |
1042 * NOTE: To avoid races, this should be called before Dart_Initialize. | 1064 * NOTE: To avoid races, this should be called before Dart_Initialize. |
1043 */ | 1065 */ |
1044 DART_EXPORT void Dart_SetEmbedderTimelineCallbacks( | 1066 DART_EXPORT void Dart_SetEmbedderTimelineCallbacks( |
1045 Dart_EmbedderTimelineStartRecording start_recording, | 1067 Dart_EmbedderTimelineStartRecording start_recording, |
1046 Dart_EmbedderTimelineStopRecording stop_recording); | 1068 Dart_EmbedderTimelineStopRecording stop_recording); |
1047 | 1069 |
1048 #endif // INCLUDE_DART_TOOLS_API_H_ | 1070 #endif // INCLUDE_DART_TOOLS_API_H_ |
OLD | NEW |