using Astralis; namespace Spry { public class ContinuationContext : Object { public SseStream sse_stream { get; private set;} private Component component; public ContinuationContext(Component component, SseStream stream) { this.sse_stream = stream; this.component = component; } public async void send_dynamic(string dynamic_name) throws Error { var fragment = yield this.component.get_dynamic_section(dynamic_name); yield sse_stream.send_event(new SseEvent.with_type(@"_spry-dynamic-$dynamic_name", fragment.body.inner_html)); } public async void send_json(string event_type, Json.Node node) throws Error { var json = Json.to_string(node, false); yield sse_stream.send_event(new SseEvent.with_type(event_type, json)); } public async void send_string(string event_type, string data) throws Error { yield sse_stream.send_event(new SseEvent.with_type(event_type, data)); } public async void send_full_update(string event_type) throws Error { var doc = yield component.to_document(); string data; if(component.get_type().is_a(typeof(PageComponent))) { data = doc.to_html(); } else { data = doc.body.inner_html; } yield sse_stream.send_event(new SseEvent.with_type(event_type, data)); } public async void send_event(SseEvent event) throws Error { yield sse_stream.send_event(event); } } }