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

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

Issue 125103004: Move service into VM (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 11 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 615 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 * required (for example, if the isolate was created successfully by 626 * required (for example, if the isolate was created successfully by
627 * Dart_CreateIsolate() but the root library fails to load 627 * Dart_CreateIsolate() but the root library fails to load
628 * successfully, then the function should call Dart_ShutdownIsolate 628 * successfully, then the function should call Dart_ShutdownIsolate
629 * before returning). 629 * before returning).
630 * 630 *
631 * When the function returns false, the function should set *error to 631 * When the function returns false, the function should set *error to
632 * a malloc-allocated buffer containing a useful error message. The 632 * a malloc-allocated buffer containing a useful error message. The
633 * caller of this function (the vm) will make sure that the buffer is 633 * caller of this function (the vm) will make sure that the buffer is
634 * freed. 634 * freed.
635 * 635 *
636 * \param load_script A flag that when false results in no script
637 * being loaded in the created isolate.
siva 2014/01/10 00:01:54 Comment needs to be removed.
Cutch 2014/01/10 21:01:42 Done.
636 * \param script_uri The uri of the script to load. 638 * \param script_uri The uri of the script to load.
637 * This uri is non NULL if the isolate is being created using the 639 * This uri is non NULL if the isolate is being created using the
638 * spawnUri isolate API. This uri has been canonicalized by the 640 * spawnUri isolate API. This uri has been canonicalized by the
639 * library tag handler from the parent isolate. 641 * library tag handler from the parent isolate.
640 * The callback is responsible for loading this script by a call to 642 * The callback is responsible for loading this script by a call to
641 * Dart_LoadScript or Dart_LoadScriptFromSnapshot. 643 * Dart_LoadScript or Dart_LoadScriptFromSnapshot.
642 * This uri will be NULL if the isolate is being created using the 644 * This uri will be NULL if the isolate is being created using the
643 * spawnFunction isolate API. 645 * spawnFunction isolate API.
644 * The callback is responsible for loading the script used in the 646 * The callback is responsible for loading the script used in the
645 * parent isolate by a call to Dart_LoadScript or 647 * parent isolate by a call to Dart_LoadScript or
646 * Dart_LoadScriptFromSnapshot. 648 * Dart_LoadScriptFromSnapshot.
647 * \param main The name of the main entry point this isolate will 649 * \param main The name of the main entry point this isolate will
648 * eventually run. This is provided for advisory purposes only to 650 * eventually run. This is provided for advisory purposes only to
649 * improve debugging messages. The main function is not invoked by 651 * improve debugging messages. The main function is not invoked by
650 * this function. 652 * this function.
651 * \param callback_data The callback data which was passed to the 653 * \param callback_data The callback data which was passed to the
652 * parent isolate when it was created by calling Dart_CreateIsolate(). 654 * parent isolate when it was created by calling Dart_CreateIsolate().
653 * \param error A structure into which the embedder can place a 655 * \param error A structure into which the embedder can place a
654 * C string containing an error message in the case of failures. 656 * C string containing an error message in the case of failures.
655 * 657 *
656 * \return The embedder returns NULL if the creation and 658 * \return The embedder returns NULL if the creation and
657 * initialization was not successful and the isolate if successful. 659 * initialization was not successful and the isolate if successful.
658 */ 660 */
659 typedef Dart_Isolate (*Dart_IsolateCreateCallback)(const char* script_uri, 661 typedef Dart_Isolate (*Dart_IsolateCreateCallback)(const char* script_uri,
660 const char* main, 662 const char* main,
661 void* callback_data, 663 void* callback_data,
662 char** error); 664 char** error);
663 665
666
667 /**
668 * The service isolate creation and initialization callback function.
669 *
670 * This callback, provided by the embedder, is called when the vm
671 * needs to create the service isolate. The callback should create an isolate
672 * by calling Dart_CreateIsolate and prepare the isolate to be used as
673 * the service isolate.
674 *
675 * When the function returns NULL, it is the responsibility of this
676 * function to ensure that Dart_ShutdownIsolate has been called if
677 * required.
678 *
679 * When the function returns NULL, the function should set *error to
680 * a malloc-allocated buffer containing a useful error message. The
681 * caller of this function (the vm) will make sure that the buffer is
682 * freed.
683 *
684 *
685 * \param error A structure into which the embedder can place a
686 * C string containing an error message in the case of failures.
687 *
688 * \return The embedder returns NULL if the creation and
689 * initialization was not successful and the isolate if successful.
690 */
691 typedef Dart_Isolate (*Dart_ServiceIsolateCreateCallback)(void* callback_data,
692 char** error);
siva 2014/01/10 00:01:54 I am still debating whether it makes sense to have
693
664 /** 694 /**
665 * An isolate interrupt callback function. 695 * An isolate interrupt callback function.
666 * 696 *
667 * This callback, provided by the embedder, is called when an isolate 697 * This callback, provided by the embedder, is called when an isolate
668 * is interrupted as a result of a call to Dart_InterruptIsolate(). 698 * is interrupted as a result of a call to Dart_InterruptIsolate().
669 * When the callback is called, Dart_CurrentIsolate can be used to 699 * When the callback is called, Dart_CurrentIsolate can be used to
670 * figure out which isolate is being interrupted. 700 * figure out which isolate is being interrupted.
671 * 701 *
672 * \return The embedder returns true if the isolate should continue 702 * \return The embedder returns true if the isolate should continue
673 * execution. If the embedder returns false, the isolate will be 703 * execution. If the embedder returns false, the isolate will be
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
762 */ 792 */
763 DART_EXPORT bool Dart_Initialize( 793 DART_EXPORT bool Dart_Initialize(
764 Dart_IsolateCreateCallback create, 794 Dart_IsolateCreateCallback create,
765 Dart_IsolateInterruptCallback interrupt, 795 Dart_IsolateInterruptCallback interrupt,
766 Dart_IsolateUnhandledExceptionCallback unhandled_exception, 796 Dart_IsolateUnhandledExceptionCallback unhandled_exception,
767 Dart_IsolateShutdownCallback shutdown, 797 Dart_IsolateShutdownCallback shutdown,
768 Dart_FileOpenCallback file_open, 798 Dart_FileOpenCallback file_open,
769 Dart_FileReadCallback file_read, 799 Dart_FileReadCallback file_read,
770 Dart_FileWriteCallback file_write, 800 Dart_FileWriteCallback file_write,
771 Dart_FileCloseCallback file_close, 801 Dart_FileCloseCallback file_close,
772 Dart_EntropySource entropy_source); 802 Dart_EntropySource entropy_source,
803 Dart_ServiceIsolateCreateCallback service_create);
773 804
774 /** 805 /**
775 * Cleanup state in the VM before process termination. 806 * Cleanup state in the VM before process termination.
776 * 807 *
777 * \return True if cleanup is successful. 808 * \return True if cleanup is successful.
778 */ 809 */
779 DART_EXPORT bool Dart_Cleanup(); 810 DART_EXPORT bool Dart_Cleanup();
780 811
781 /** 812 /**
782 * Sets command line flags. Should be called before Dart_Initialize. 813 * Sets command line flags. Should be called before Dart_Initialize.
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
1058 DART_EXPORT Dart_Handle Dart_NewSendPort(Dart_Port port_id); 1089 DART_EXPORT Dart_Handle Dart_NewSendPort(Dart_Port port_id);
1059 1090
1060 /** 1091 /**
1061 * Gets the ReceivePort for the provided port id, creating it if necessary. 1092 * Gets the ReceivePort for the provided port id, creating it if necessary.
1062 * 1093 *
1063 * Note that there is at most one ReceivePort for a given port id. 1094 * Note that there is at most one ReceivePort for a given port id.
1064 */ 1095 */
1065 DART_EXPORT Dart_Handle Dart_GetReceivePort(Dart_Port port_id); 1096 DART_EXPORT Dart_Handle Dart_GetReceivePort(Dart_Port port_id);
1066 1097
1067 1098
1099 /**
1100 * Returns true if handle is a SendPort.
1101 *
1102 * \return True if send_port is a SendPort.
1103 */
1104 DART_EXPORT bool Dart_IsSendPort(Dart_Handle send_port);
siva 2014/01/10 00:01:54 Do we need this call if it is only to ensure that
Cutch 2014/01/10 21:01:42 Killed it.
1105
1106 /**
1107 * Posts an object to the send port.
1108 *
1109 * \param send_port A Dart SendPort.
1110 * \param object An object from the current isolate.
1111 *
1112 * \return True if the message was posted.
1113 */
1114 DART_EXPORT bool Dart_SendPortSend(Dart_Handle send_port, Dart_Handle object);
siva 2014/01/10 00:01:54 Dart_SendPortSend seems like an odd name why not c
Cutch 2014/01/10 21:01:42 Done.
1115
1116
1068 /* 1117 /*
1069 * ====== 1118 * ======
1070 * Scopes 1119 * Scopes
1071 * ====== 1120 * ======
1072 */ 1121 */
1073 1122
1074 /** 1123 /**
1075 * Enters a new scope. 1124 * Enters a new scope.
1076 * 1125 *
1077 * All new local handles will be created in this scope. Additionally, 1126 * All new local handles will be created in this scope. Additionally,
(...skipping 1308 matching lines...) Expand 10 before | Expand all | Expand 10 after
2386 * 'peer'. 2435 * 'peer'.
2387 * 2436 *
2388 * \param object An object. 2437 * \param object An object.
2389 * \param peer A value to store in the peer field. 2438 * \param peer A value to store in the peer field.
2390 * 2439 *
2391 * \return Returns an error if 'object' is a subtype of Null, num, or 2440 * \return Returns an error if 'object' is a subtype of Null, num, or
2392 * bool. 2441 * bool.
2393 */ 2442 */
2394 DART_EXPORT Dart_Handle Dart_SetPeer(Dart_Handle object, void* peer); 2443 DART_EXPORT Dart_Handle Dart_SetPeer(Dart_Handle object, void* peer);
2395 2444
2445
2446 /*
2447 * =======
2448 * Service
2449 * =======
2450 */
2451
2452 /**
2453 * Returns the Service isolate initialized and with the dart:vmservice library
2454 * loaded and booted.
2455 *
2456 * This will call the embedder provided Dart_ServiceIsolateCreateCallback to
2457 * create the isolate.
2458 *
2459 * After obtaining the service isolate the embedder specific glue code can
2460 * be loaded in and the isolate can be run by the embedder.
2461 *
2462 * \param callbacK_data A pointer passed to Dart_ServiceIsolateCreateCallback.
2463 *
2464 * \return Returns NULL if an error occurred.
2465 */
2466 DART_EXPORT Dart_Isolate Dart_GetServiceIsolate(void* callback_data);
siva 2014/01/10 00:01:54 Per offline discussion we should move towards Dart
2467
2468 /**
2469 * Register the current isolate with the service. Typically the embedder
2470 * will call this function in its Dart_IsolateCreateCallback.
2471 *
2472 * Requires there to be a current isolate.
2473 */
2474 DART_EXPORT void Dart_RegisterWithService();
2475
2476 /**
2477 * Unregister the current isolate from the service. Typically an embedder will
2478 * call this function in its Dart_IsolateShutdownCallback.
2479 *
2480 * Requires there to be a current isolate.
2481 */
2482 DART_EXPORT void Dart_UnregisterFromService();
siva 2014/01/10 00:01:54 Todd and I were discussing this, we were wondering
Cutch 2014/01/10 21:01:42 I've removed these methods for now and auto-regist
2483
2396 #endif /* INCLUDE_DART_API_H_ */ /* NOLINT */ 2484 #endif /* INCLUDE_DART_API_H_ */ /* NOLINT */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698