Index: runtime/include/dart_tools_api.h |
diff --git a/runtime/include/dart_tools_api.h b/runtime/include/dart_tools_api.h |
index a70380c96faae140b16376faf1a74f0b053c2836..15c549a6b5bce076dcc0e18d40082db1c999c12e 100644 |
--- a/runtime/include/dart_tools_api.h |
+++ b/runtime/include/dart_tools_api.h |
@@ -910,19 +910,52 @@ DART_EXPORT Dart_Handle Dart_ServiceSendDataEvent(const char* stream_id, |
DART_EXPORT void Dart_TimelineSetRecordedStreams(int64_t stream_mask); |
/** |
- * Get the timeline for the current isolate in trace-event format |
+ * A stream consumer callback function. |
+ * |
+ * This function will be called repeatedly until there is no more data in a |
+ * stream. |
siva
2015/08/11 16:54:33
Should this be:
until there is no more data in a s
Cutch
2015/08/11 17:08:56
Done.
|
+ * |
+ * \param state Indicates a new stream, data, or a finished stream. |
+ * \param stream_name A name for this stream. Not guaranteed to be meaningful. |
+ * \param buffer A pointer to data from the stream. |
siva
2015/08/11 16:54:33
"A pointer to the stream data" maybe?
Cutch
2015/08/11 17:08:56
Done.
|
+ * \param buffer_length The number of bytes at buffer that should be consumed. |
+ * \param user_data The user data pointer passed in when requesting the stream. |
siva
2015/08/11 16:54:33
instead of user_data maybe name it stream_callback
Cutch
2015/08/11 17:08:56
Done.
|
* |
- * \param output The address of the trace buffer output |
- * \param output_length The length of the trace buffer output |
+ * At the start of each stream state will be DART_STREAM_CONSUMER_STATE_START |
+ * and buffer will be NULL. |
+ * |
+ * For each chunk of data the state will be DART_STREAM_CONSUMER_STATE_DATA |
+ * and buffer will not be NULL. |
+ * |
+ * At the end of each stream state will be DART_STREAM_CONSUMER_STATE_FINISH |
+ * and buffer will be NULL. |
+ */ |
+typedef void (*Dart_StreamConsumer)( |
+ intptr_t state, |
siva
2015/08/11 16:54:33
Dart_StreamConsumer_State state,
(see below).
Cutch
2015/08/11 17:08:56
Done.
|
+ const char* stream_name, |
+ uint8_t* buffer, |
+ intptr_t buffer_length, |
+ void* user_data); |
+ |
+/** Indicates a new stream is being output */ |
+#define DART_STREAM_CONSUMER_STATE_START 0 |
+/** Data for the current stream */ |
+#define DART_STREAM_CONSUMER_STATE_DATA 1 |
+/** Indicates stream is finished */ |
+#define DART_STREAM_CONSUMER_STATE_FINISH 2 |
siva
2015/08/11 16:54:33
why not use a enum here:
typedef enum {
Dart_St
Cutch
2015/08/11 17:08:56
Done.
|
+ |
+/** |
+ * Get the timeline for the current isolate in trace-event format |
* |
- * NOTE: output is allocated in the C heap and must be freed by the caller. |
+ * \param consumer A Dart_StreamConsumer. |
+ * \param user_data User data passed into consumer. |
* |
* NOTE: The trace-event format is documented here: https://goo.gl/hDZw5M |
* |
- * \return True if a trace was output. The outputted trace may be empty. |
+ * \return True if a stream was output. |
*/ |
-DART_EXPORT bool Dart_TimelineGetTrace(const char** output, |
- intptr_t* output_length); |
+DART_EXPORT bool Dart_TimelineGetTrace(Dart_StreamConsumer consumer, |
+ void* user_data); |
/** |
* Add a duration timeline event to the embedder stream for the current isolate. |