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

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

Issue 8588040: Add a mid-sized integration test for the Dart Embedding Api which (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 years 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
« no previous file with comments | « no previous file | runtime/lib/isolate.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_API_H_ 5 #ifndef INCLUDE_DART_API_H_
6 #define INCLUDE_DART_API_H_ 6 #define INCLUDE_DART_API_H_
7 7
8 /** \mainpage Dart Embedding API Reference 8 /** \mainpage Dart Embedding API Reference
9 * 9 *
10 * Dart is a class-based programming language for creating structured 10 * Dart is a class-based programming language for creating structured
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 * passed as the 'reply_port' parameter. 375 * passed as the 'reply_port' parameter.
376 * 376 *
377 * The memory pointed to by 'message' has been allocated by malloc. It 377 * The memory pointed to by 'message' has been allocated by malloc. It
378 * is the responsibility of the callback to ensure that free(message) 378 * is the responsibility of the callback to ensure that free(message)
379 * is called once the message has been processed. 379 * is called once the message has been processed.
380 * 380 *
381 * The callback should return false if it runs into a problem 381 * The callback should return false if it runs into a problem
382 * processing this message. 382 * processing this message.
383 */ 383 */
384 typedef bool (*Dart_PostMessageCallback)(Dart_Isolate dest_isolate, 384 typedef bool (*Dart_PostMessageCallback)(Dart_Isolate dest_isolate,
385 Dart_Port dest_port, 385 Dart_Port dest_port_id,
386 Dart_Port reply_port, 386 Dart_Port reply_port_id,
387 Dart_Message message); 387 Dart_Message message);
388 // TODO(turnidge): Add a Dart_ReleaseMessage to hide allocation details. 388 // TODO(turnidge): Add a Dart_ReleaseMessage to hide allocation details.
389 389
390 const Dart_Port kCloseAllPorts = 0; 390 const Dart_Port kCloseAllPorts = 0;
391 391
392 /** 392 /**
393 * A close port callback. 393 * A close port callback.
394 * 394 *
395 * This callback allows the embedder to receive notification when a 395 * This callback allows the embedder to receive notification when a
396 * port is closed. The constant 'kCloseAllPorts' is passed as the 396 * port is closed. The constant 'kCloseAllPorts' is passed as the
397 * 'port' parameter when all active ports are being closed at once. 397 * 'port' parameter when all active ports are being closed at once.
398 */ 398 */
399 typedef void (*Dart_ClosePortCallback)(Dart_Isolate isolate, 399 typedef void (*Dart_ClosePortCallback)(Dart_Isolate isolate,
400 Dart_Port port); 400 Dart_Port port_id);
401 401
402 /** 402 /**
403 * Allows embedders to provide an alternative mechanism for sending 403 * Allows embedders to provide an alternative mechanism for sending
404 * inter-isolate messages. This setting only applies to the current 404 * inter-isolate messages. This setting only applies to the current
405 * isolate. 405 * isolate.
406 * 406 *
407 * Most embedders will only call this function once, before isolate 407 * Most embedders will only call this function once, before isolate
408 * execution begins. If this function is called after isolate 408 * execution begins. If this function is called after isolate
409 * execution begins, the embedder is responsible for threading issues. 409 * execution begins, the embedder is responsible for threading issues.
410 */ 410 */
411 DART_EXPORT void Dart_SetMessageCallbacks( 411 DART_EXPORT void Dart_SetMessageCallbacks(
412 Dart_PostMessageCallback post_message_callback, 412 Dart_PostMessageCallback post_message_callback,
413 Dart_ClosePortCallback close_port_callback); 413 Dart_ClosePortCallback close_port_callback);
414 // TODO(turnidge): Consider moving this to isolate creation so that it 414 // TODO(turnidge): Consider moving this to isolate creation so that it
415 // is impossible to mess up. 415 // is impossible to mess up.
416 416
417 /** 417 /**
418 * Handles a message on the current isolate. 418 * Handles a message on the current isolate.
419 * 419 *
420 * May generate an unhandled exception error. 420 * May generate an unhandled exception error.
421 * 421 *
422 * Note that this function does not free the memory associated with 422 * Note that this function does not free the memory associated with
423 * 'dart_message'. 423 * 'dart_message'.
424 * 424 *
425 * \return A valid handle if no error occurs during the operation. 425 * \return A valid handle if no error occurs during the operation.
426 */ 426 */
427 DART_EXPORT Dart_Handle Dart_HandleMessage(Dart_Port dest_port, 427 DART_EXPORT Dart_Handle Dart_HandleMessage(Dart_Port dest_port_id,
428 Dart_Port reply_port, 428 Dart_Port reply_port_id,
429 Dart_Message dart_message); 429 Dart_Message dart_message);
430 // TODO(turnidge): Revisit memory management of 'dart_message'. 430 // TODO(turnidge): Revisit memory management of 'dart_message'.
431 431
432 /** 432 /**
433 * Processes any incoming messages for the current isolate. 433 * Processes any incoming messages for the current isolate.
434 * 434 *
435 * This function may only be used when the embedder has not provided 435 * This function may only be used when the embedder has not provided
436 * an alternate message delivery mechanism with 436 * an alternate message delivery mechanism with
437 * Dart_SetMessageCallbacks. It is provided for convenience. 437 * Dart_SetMessageCallbacks. It is provided for convenience.
438 * 438 *
439 * This function waits for incoming messages for the current 439 * This function waits for incoming messages for the current
440 * isolate. As new messages arrive, they are handled using 440 * isolate. As new messages arrive, they are handled using
441 * Dart_HandleMessage. The routine exits when all ports to the 441 * Dart_HandleMessage. The routine exits when all ports to the
442 * current isolate are closed. 442 * current isolate are closed.
443 */ 443 */
444 DART_EXPORT Dart_Handle Dart_RunLoop(); 444 DART_EXPORT Dart_Handle Dart_RunLoop();
445 // TODO(turnidge): Should this be removed from the public api? 445 // TODO(turnidge): Should this be removed from the public api?
446 446
447 /** 447 /**
448 * Gets the main port id for the current isolate.
449 */
450 DART_EXPORT Dart_Port Dart_GetMainPortId();
451
452 /**
453 * Does the current isolate have live ReceivePorts?
454 *
455 * A ReceivePort is live when it has not been closed.
456 */
457 DART_EXPORT bool Dart_HasLivePorts();
458
459 /**
448 * Posts a message for some isolate. The message is built from a raw 460 * Posts a message for some isolate. The message is built from a raw
449 * array. 461 * array.
450 * 462 *
451 * \param port The destination port. 463 * \param port The destination port.
452 * \param length The length of the data array. 464 * \param length The length of the data array.
453 * \param data A data array to be sent in the message. 465 * \param data A data array to be sent in the message.
454 * 466 *
455 * \return True if the message was posted. 467 * \return True if the message was posted.
456 */ 468 */
457 DART_EXPORT bool Dart_PostIntArray(Dart_Port port, 469 DART_EXPORT bool Dart_PostIntArray(Dart_Port port_id,
458 intptr_t length, 470 intptr_t length,
459 intptr_t* data); 471 intptr_t* data);
460 // TODO(turnidge): Should this be intptr_t or some fixed length type? 472 // TODO(turnidge): Should this be intptr_t or some fixed length type?
461 // TODO(turnidge): Reverse length/data for consistency. 473 // TODO(turnidge): Reverse length/data for consistency.
462 474
463 /** 475 /**
464 * Posts a message for some isolate. The message is a serialized 476 * Posts a message for some isolate. The message is a serialized
465 * object. 477 * object.
466 * 478 *
467 * Requires there to be a current isolate. 479 * Requires there to be a current isolate.
468 * 480 *
469 * \param port The destination port. 481 * \param port The destination port.
470 * \param object An object from the current isolate. 482 * \param object An object from the current isolate.
471 * 483 *
472 * \return True if the message was posted. 484 * \return True if the message was posted.
473 */ 485 */
474 DART_EXPORT bool Dart_Post(Dart_Port port, Dart_Handle object); 486 DART_EXPORT bool Dart_Post(Dart_Port port_id, Dart_Handle object);
487
488 /**
489 * Returns a new SendPort with the provided port id.
490 */
491 DART_EXPORT Dart_Handle Dart_NewSendPort(Dart_Port port_id);
492
493 /**
494 * Gets the ReceivePort for the provided port id, creating it if necessary.
495 *
496 * Note that there is at most one ReceivePort for a given port id.
497 */
498 DART_EXPORT Dart_Handle Dart_GetReceivePort(Dart_Port port_id);
475 499
476 // --- Scopes ---- 500 // --- Scopes ----
477 501
478 /** 502 /**
479 * Enters a new scope. 503 * Enters a new scope.
480 * 504 *
481 * All new local handles will be created in this scope. Additionally, 505 * All new local handles will be created in this scope. Additionally,
482 * some functions may return "scope allocated" memory which is only 506 * some functions may return "scope allocated" memory which is only
483 * valid within this scope. 507 * valid within this scope.
484 * 508 *
(...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after
1204 1228
1205 // --- Profiling support ---- 1229 // --- Profiling support ----
1206 1230
1207 // External pprof support for gathering and dumping symbolic 1231 // External pprof support for gathering and dumping symbolic
1208 // information that can be used for better profile reports for 1232 // information that can be used for better profile reports for
1209 // dynamically generated code. 1233 // dynamically generated code.
1210 DART_EXPORT void Dart_InitPprofSupport(); 1234 DART_EXPORT void Dart_InitPprofSupport();
1211 DART_EXPORT void Dart_GetPprofSymbolInfo(void** buffer, int* buffer_size); 1235 DART_EXPORT void Dart_GetPprofSymbolInfo(void** buffer, int* buffer_size);
1212 1236
1213 #endif // INCLUDE_DART_API_H_ 1237 #endif // INCLUDE_DART_API_H_
OLDNEW
« no previous file with comments | « no previous file | runtime/lib/isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698