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

Side by Side Diff: runtime/include/dart_api.h

Issue 584023004: Service isolate rework (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 3 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 2 * Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
3 * for details. All rights reserved. Use of this source code is governed by a 3 * for details. All rights reserved. Use of this source code is governed by a
4 * BSD-style license that can be found in the LICENSE file. 4 * BSD-style license that can be found in the LICENSE file.
5 */ 5 */
6 6
7 #ifndef INCLUDE_DART_API_H_ 7 #ifndef INCLUDE_DART_API_H_
8 #define INCLUDE_DART_API_H_ 8 #define INCLUDE_DART_API_H_
9 9
10 /** \mainpage Dart Embedding API Reference 10 /** \mainpage Dart Embedding API Reference
(...skipping 715 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 * C string containing an error message in the case of failures. 726 * C string containing an error message in the case of failures.
727 * 727 *
728 * \return The embedder returns NULL if the creation and 728 * \return The embedder returns NULL if the creation and
729 * initialization was not successful and the isolate if successful. 729 * initialization was not successful and the isolate if successful.
730 */ 730 */
731 typedef Dart_Isolate (*Dart_IsolateCreateCallback)(const char* script_uri, 731 typedef Dart_Isolate (*Dart_IsolateCreateCallback)(const char* script_uri,
732 const char* main, 732 const char* main,
733 void* callback_data, 733 void* callback_data,
734 char** error); 734 char** error);
735 735
736
737 /**
738 * The service isolate creation and initialization callback function.
739 *
740 * This callback, provided by the embedder, is called when the vm
741 * needs to create the service isolate. The callback should create an isolate
742 * by calling Dart_CreateIsolate and prepare the isolate to be used as
743 * the service isolate.
744 *
745 * When the function returns NULL, it is the responsibility of this
746 * function to ensure that Dart_ShutdownIsolate has been called if
747 * required.
748 *
749 * When the function returns NULL, the function should set *error to
750 * a malloc-allocated buffer containing a useful error message. The
751 * caller of this function (the vm) will make sure that the buffer is
752 * freed.
753 *
754 *
755 * \param error A structure into which the embedder can place a
756 * C string containing an error message in the case of failures.
757 *
758 * \return The embedder returns NULL if the creation and
759 * initialization was not successful and the isolate if successful.
760 */
761 typedef Dart_Isolate (*Dart_ServiceIsolateCreateCalback)(void* callback_data,
762 char** error);
763
764 /** 736 /**
765 * An isolate interrupt callback function. 737 * An isolate interrupt callback function.
766 * 738 *
767 * This callback, provided by the embedder, is called when an isolate 739 * This callback, provided by the embedder, is called when an isolate
768 * is interrupted as a result of a call to Dart_InterruptIsolate(). 740 * is interrupted as a result of a call to Dart_InterruptIsolate().
769 * When the callback is called, Dart_CurrentIsolate can be used to 741 * When the callback is called, Dart_CurrentIsolate can be used to
770 * figure out which isolate is being interrupted. 742 * figure out which isolate is being interrupted.
771 * 743 *
772 * \return The embedder returns true if the isolate should continue 744 * \return The embedder returns true if the isolate should continue
773 * execution. If the embedder returns false, the isolate will be 745 * execution. If the embedder returns false, the isolate will be
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
862 */ 834 */
863 DART_EXPORT bool Dart_Initialize( 835 DART_EXPORT bool Dart_Initialize(
864 Dart_IsolateCreateCallback create, 836 Dart_IsolateCreateCallback create,
865 Dart_IsolateInterruptCallback interrupt, 837 Dart_IsolateInterruptCallback interrupt,
866 Dart_IsolateUnhandledExceptionCallback unhandled_exception, 838 Dart_IsolateUnhandledExceptionCallback unhandled_exception,
867 Dart_IsolateShutdownCallback shutdown, 839 Dart_IsolateShutdownCallback shutdown,
868 Dart_FileOpenCallback file_open, 840 Dart_FileOpenCallback file_open,
869 Dart_FileReadCallback file_read, 841 Dart_FileReadCallback file_read,
870 Dart_FileWriteCallback file_write, 842 Dart_FileWriteCallback file_write,
871 Dart_FileCloseCallback file_close, 843 Dart_FileCloseCallback file_close,
872 Dart_EntropySource entropy_source, 844 Dart_EntropySource entropy_source);
873 Dart_ServiceIsolateCreateCalback service_create);
874 845
875 /** 846 /**
876 * Cleanup state in the VM before process termination. 847 * Cleanup state in the VM before process termination.
877 * 848 *
878 * \return True if cleanup is successful. 849 * \return True if cleanup is successful.
879 */ 850 */
880 DART_EXPORT bool Dart_Cleanup(); 851 DART_EXPORT bool Dart_Cleanup();
881 852
882 /** 853 /**
883 * Sets command line flags. Should be called before Dart_Initialize. 854 * Sets command line flags. Should be called before Dart_Initialize.
(...skipping 1850 matching lines...) Expand 10 before | Expand all | Expand 10 after
2734 * 'peer'. 2705 * 'peer'.
2735 * 2706 *
2736 * \param object An object. 2707 * \param object An object.
2737 * \param peer A value to store in the peer field. 2708 * \param peer A value to store in the peer field.
2738 * 2709 *
2739 * \return Returns an error if 'object' is a subtype of Null, num, or 2710 * \return Returns an error if 'object' is a subtype of Null, num, or
2740 * bool. 2711 * bool.
2741 */ 2712 */
2742 DART_EXPORT Dart_Handle Dart_SetPeer(Dart_Handle object, void* peer); 2713 DART_EXPORT Dart_Handle Dart_SetPeer(Dart_Handle object, void* peer);
2743 2714
2744
2745 /*
2746 * =======
2747 * Service
2748 * =======
2749 */
2750
2751 /**
2752 * Returns the Service isolate initialized and with the dart:vmservice library
2753 * loaded and booted.
2754 *
2755 * This will call the embedder provided Dart_ServiceIsolateCreateCalback to
2756 * create the isolate.
2757 *
2758 * After obtaining the service isolate the embedder specific glue code can
2759 * be loaded in and the isolate can be run by the embedder.
2760 *
2761 * NOTE: It is not safe to call this from multiple threads concurrently.
2762 *
2763 * \return Returns NULL if an error occurred.
2764 */
2765 DART_EXPORT Dart_Isolate Dart_GetServiceIsolate(void* callback_data);
2766
2767
2768 /**
2769 * Returns true if the service is enabled. False otherwise.
2770 *
2771 * \return Returns true if service is running.
2772 */
2773 DART_EXPORT bool Dart_IsServiceRunning();
2774
2775
2776 /** 2715 /**
2777 * A service request callback function. 2716 * A service request callback function.
2778 * 2717 *
2779 * These callbacks, registered by the embedder, are called when the VM receives 2718 * These callbacks, registered by the embedder, are called when the VM receives
2780 * a service request it can't handle and the service request command name 2719 * a service request it can't handle and the service request command name
2781 * matches one of the embedder registered handlers. 2720 * matches one of the embedder registered handlers.
2782 * 2721 *
2783 * \param name The service request command name. Always the first entry 2722 * \param name The service request command name. Always the first entry
2784 * in the arguments array. Will match the name the callback was 2723 * in the arguments array. Will match the name the callback was
2785 * registered with. 2724 * registered with.
(...skipping 12 matching lines...) Expand all
2798 */ 2737 */
2799 typedef const char* (*Dart_ServiceRequestCallback)( 2738 typedef const char* (*Dart_ServiceRequestCallback)(
2800 const char* name, 2739 const char* name,
2801 const char** arguments, 2740 const char** arguments,
2802 intptr_t num_arguments, 2741 intptr_t num_arguments,
2803 const char** option_keys, 2742 const char** option_keys,
2804 const char** option_values, 2743 const char** option_values,
2805 intptr_t num_options, 2744 intptr_t num_options,
2806 void* user_data); 2745 void* user_data);
2807 2746
2747 /*
2748 * =======
2749 * Service
2750 * =======
2751 */
2752
2808 /** 2753 /**
2809 * Register a Dart_ServiceRequestCallback to be called to handle requests 2754 * Register a Dart_ServiceRequestCallback to be called to handle requests
2810 * with name on a specific isolate. The callback will be invoked with the 2755 * with name on a specific isolate. The callback will be invoked with the
2811 * current isolate set to the request target. 2756 * current isolate set to the request target.
2812 * 2757 *
2813 * \param name The name of the command that this callback is responsible for. 2758 * \param name The name of the command that this callback is responsible for.
2814 * \param callback The callback to invoke. 2759 * \param callback The callback to invoke.
2815 * \param user_data The user data passed to the callback. 2760 * \param user_data The user data passed to the callback.
2816 * 2761 *
2817 * NOTE: If multiple callbacks with the same name are registered, only the 2762 * NOTE: If multiple callbacks with the same name are registered, only the
(...skipping 15 matching lines...) Expand all
2833 * NOTE: If multiple callbacks with the same name are registered, only the 2778 * NOTE: If multiple callbacks with the same name are registered, only the
2834 * last callback registered will be remembered. 2779 * last callback registered will be remembered.
2835 */ 2780 */
2836 DART_EXPORT void Dart_RegisterRootServiceRequestCallback( 2781 DART_EXPORT void Dart_RegisterRootServiceRequestCallback(
2837 const char* name, 2782 const char* name,
2838 Dart_ServiceRequestCallback callback, 2783 Dart_ServiceRequestCallback callback,
2839 void* user_data); 2784 void* user_data);
2840 2785
2841 2786
2842 #endif /* INCLUDE_DART_API_H_ */ /* NOLINT */ 2787 #endif /* INCLUDE_DART_API_H_ */ /* NOLINT */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698