tag @? namespace examples.full // Standard Imports import std::str::StringBounds settings { indexed-all=false allow-debugging=true } @affects=struct protocol settings MailSettings { indexed=true } @settings=MailSettings struct Mail { 1# sender: str 2# recipient: str } struct Article { @validators=[StringBounds(min_chars=3 max_chars=32] 1# title: str @validators=[StringBounds(min_chars=24 max_chars=412] 2# content: str } @hidden @settings=MailSettings protocol Mail { 1# async function send(Mail) } // Maximum amount of articles that a provider can send const SENT_ARTICLES_MAX: u8 = 10 //#provider=Server // TODO: This is the original proposal, it would only dictate direction, below is the new proposal #provider=Multiple consumer=Multiple // TODO: These parameters need more situational introspection to be documented protocol Feed { // Fetches new articles since last fetch @flexible async stream #timeout=1000ms per_send_timeout=10s cooldown=10s 1# function fetch_articles() -> Article[SENT_ARTICLES_MAX] }