File

teal-src/util/error.d.tl @ 12807:f0f7b0c61465

mod_s2s: Avoid sending too large stanzas Just dropping them isn't great but hopefully something more sensible can be done in the future. Will need work to ensure that this signal is handled correctly in sending modules etc.
author Kim Alvefur <zash@zash.se>
date Tue, 16 Mar 2021 18:30:54 +0100
parent 12626:608443cc765c
line wrap: on
line source

local enum error_type
	"auth"
	"cancel"
	"continue"
	"modify"
	"wait"
end

local enum error_condition
	"bad-request"
	"conflict"
	"feature-not-implemented"
	"forbidden"
	"gone"
	"internal-server-error"
	"item-not-found"
	"jid-malformed"
	"not-acceptable"
	"not-allowed"
	"not-authorized"
	"policy-violation"
	"recipient-unavailable"
	"redirect"
	"registration-required"
	"remote-server-not-found"
	"remote-server-timeout"
	"resource-constraint"
	"service-unavailable"
	"subscription-required"
	"undefined-condition"
	"unexpected-request"
end

local record protoerror
	type : error_type
	condition : error_condition
	text : string
	code : integer
end

local record Error
	type : error_type
	condition : error_condition
	text : string
	code : integer
	context : { any : any }
	source : string
end

local type compact_registry_item = { string, string, string, string }
local type compact_registry = { compact_registry_item }
local type registry = { string : protoerror }
local type context = { string : any }

local record error_registry_wrapper
	source : string
	registry : registry
	new : function (string, context) : Error
	coerce : function (any, string) : any, Error
	wrap : function (Error) : Error
	wrap : function (string, context) : Error
	is_error : function (any) : boolean
end

local record lib
	record configure_opt
		auto_inject_traceback : boolean
	end
	new : function (protoerror, context, { string : protoerror }, string) : Error
	init : function (string, string, registry | compact_registry) : error_registry_wrapper
	init : function (string, registry | compact_registry) : error_registry_wrapper
	is_error : function (any) : boolean
	coerce : function (any, string) : any, Error
	from_stanza : function (table, context, string) : Error
	configure : function
end

return lib