// 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{} }
// 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 }