comline/examples/dev.cls
2023-06-15 13:10:20 +01:00

48 lines
1 KiB
OpenEdge ABL

tag @?
namespace examples.full
// Standard Imports
import std::str::StringBounds
settings {
indexed-all=false
allow-debugging=true
}
settings MailSettings(struct, protocol) {
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]
}