示例#1
0
文件: iq.go 项目: skriptble/nine
// Handler returns the IQHandler for the given space, tag, and type combo.
// Handler will always return a non-nil IQHandler.
//
// TODO: Handler should return ServiceUnavailable for get and set IQs and
// should do nothing if the type is result or error.
func (im IQMux) Handler(el element.Element, sType string) IQHandler {
	for _, entry := range im.handlers {
		if el.MatchNamespace(entry.space) && el.Tag == entry.tag && sType == entry.stanzaType {
			return entry.h
		}
	}
	return ServiceUnavailable{}
}
示例#2
0
文件: element.go 项目: skriptble/nine
// Handler returns the ElementHandler for the given space and tag pair. Handler
// will always return a non-nil ElementHandler.
func (em ElementMux) Handler(el element.Element) ElementHandler {
	for _, entry := range em.m {
		if el.MatchNamespace(entry.space) && el.Tag == entry.tag {
			return entry.h
		}
	}
	Trace.Printf("No handlers for %s:%s", el.Space, el.Tag)
	if em.DefaultHandler == nil {
		return UnsupportedStanza{}
	}
	return em.DefaultHandler
}