54 lines
1.4 KiB
Plaintext
54 lines
1.4 KiB
Plaintext
static s64 demo_worker_init_count = 0;
|
|
static s64 demo_component_hits = 0;
|
|
|
|
INIT(Request& context)
|
|
{
|
|
(void)context;
|
|
demo_worker_init_count += 1;
|
|
}
|
|
|
|
ONCE(Request& context)
|
|
{
|
|
context.call["once_hits"] = context.call["once_hits"].to_s64() + 1;
|
|
}
|
|
|
|
COMPONENT:PROBE(Request& context)
|
|
{
|
|
demo_component_hits += 1;
|
|
|
|
<>
|
|
<div class="banner">
|
|
<strong><?= context.props["label"].to_string() ?></strong>
|
|
<div>worker INIT count for this loaded unit: <?= (u64)demo_worker_init_count ?></div>
|
|
<div>request ONCE count for this request: <?= context.call["once_hits"].to_u64() ?></div>
|
|
<div>component handler calls served by this worker copy: <?= (u64)demo_component_hits ?></div>
|
|
</div>
|
|
</>
|
|
}
|
|
|
|
RENDER(Request& context)
|
|
{
|
|
DValue first;
|
|
first["label"] = "First component call";
|
|
|
|
DValue second;
|
|
second["label"] = "Second component call in the same request";
|
|
|
|
DValue third;
|
|
third["label"] = "Third component call through unit_call(\"COMPONENT:PROBE\")";
|
|
|
|
<><html>
|
|
<link rel="stylesheet" href='style.css?v=<?= time() ?>'></link>
|
|
<h1>
|
|
<a href="index.uce">UCE Test</a>:
|
|
ONCE() and INIT()
|
|
</h1>
|
|
<p>
|
|
This page calls the same named component twice. `ONCE()` should only run once for the request, while `INIT()` should stay stable for the currently loaded worker copy.
|
|
</p>
|
|
<?: component(":PROBE", first, context) ?>
|
|
<?: component(":PROBE", second, context) ?>
|
|
<? unit_call("once-init.uce", "COMPONENT:PROBE", &third); ?>
|
|
</html></>
|
|
}
|