Send prints to the browser console. Obvious in retrospect.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3840 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
2022-02-13 22:39:22 +00:00
parent eb191254b0
commit a4a0745385
7 changed files with 85 additions and 3 deletions

View File

@ -167,6 +167,8 @@ static void _tf_task_sendPromiseExportMessage(tf_task_t* from, tf_taskstub_t* to
static JSValue _tf_task_executeSource(tf_task_t* task, const char* source, const char* name);
static tf_taskstub_t* _tf_task_get_stub(tf_task_t* task, taskid_t id);
static void _tf_task_release_export(tf_taskstub_t* stub, exportid_t exportId);
static void _tf_task_run_jobs_idle(uv_idle_t* idle);
static void _tf_task_run_jobs_prepare(uv_prepare_t* prepare);
typedef struct _import_record_t
{
@ -774,6 +776,7 @@ const char* _tf_task_get_message_type(tf_task_message_t type)
case kLoadFile: return "kLoadFile";
case kTaskError: return "kTaskError";
case kTaskTrace: return "kTaskTrace";
case kPrint: return "kPrint";
}
return "unknown";
}
@ -852,6 +855,7 @@ void tf_task_on_receive_packet(int packetType, const char* begin, size_t length,
}
break;
case kSetRequires:
JS_FreeValue(to->_context, to->_requires);
to->_requires = tf_serialize_load(to, from, begin, length);
break;
case kLoadFile:
@ -945,6 +949,13 @@ void tf_task_on_receive_packet(int packetType, const char* begin, size_t length,
JS_FreeValue(to->_context, error);
}
break;
case kPrint:
{
JSValue arguments = tf_serialize_load(to, from, begin, length);
tf_taskstub_on_print(from, arguments);
JS_FreeValue(to->_context, arguments);
}
break;
case kTaskTrace:
tf_trace_raw(to->_trace, begin, length);
break;
@ -1323,9 +1334,6 @@ static void _tf_task_trace_timer(uv_timer_t* timer)
tf_trace_counter(task->_trace, "task", sizeof(k_names) / sizeof(*k_names), k_names, values);
}
static void _tf_task_run_jobs_idle(uv_idle_t* idle);
static void _tf_task_run_jobs_prepare(uv_prepare_t* prepare);
static bool _tf_task_run_jobs(tf_task_t* task)
{
if (JS_IsJobPending(task->_runtime))
@ -1653,6 +1661,26 @@ JSValue tf_task_add_import(tf_task_t* task, taskid_t stub_id, exportid_t export_
return JS_DupValue(task->_context, function);
}
void tf_task_print(tf_task_t* task, int argc, JSValueConst* argv)
{
if (task->_parent)
{
JSValue array = JS_NewArray(task->_context);
for (int i = 0; i < argc; i++)
{
JS_SetPropertyUint32(task->_context, array, i, argv[i]);
}
void* buffer;
size_t size;
tf_serialize_store(task, task->_parent, &buffer, &size, array);
tf_packetstream_send(tf_taskstub_get_stream(task->_parent), kPrint, buffer, size);
free(buffer);
JS_FreeValue(task->_context, array);
}
}
tf_task_t* tf_task_get(JSContext* context)
{
return JS_GetContextOpaque(context);