代码拉取完成,页面将自动刷新
package registry
import (
"github.com/ghettovoice/gosip/sip"
"github.com/ghettovoice/gosip/transport"
)
type ContactInstance struct {
Contact *sip.ContactHeader
RegExpires uint32
LastUpdated uint32
Source string
UserAgent string
Transport string
}
func (c *ContactInstance) GetPNParams() *PNParams {
params := c.Contact.Address.UriParams()
if provider, ok := params.Get("pn-provider"); ok {
param, _ := params.Get("pn-param")
prid, found := params.Get("pn-prid")
if !found || prid == nil {
prid = sip.String{Str: ""}
}
pn := &PNParams{
Provider: provider.String(),
Param: param.String(),
PRID: prid.String(),
}
return pn
}
return nil
}
func NewContactInstanceForRequest(request sip.Request) *ContactInstance {
headers := request.GetHeaders("Expires")
var expires sip.Expires = 0
if len(headers) > 0 {
expires = *headers[0].(*sip.Expires)
}
contacts, _ := request.Contact()
userAgent := request.GetHeaders("User-Agent")[0].(*sip.UserAgentHeader)
instance := &ContactInstance{
Source: request.Source(),
RegExpires: uint32(expires),
Contact: contacts.Clone().(*sip.ContactHeader),
UserAgent: userAgent.String(),
Transport: request.Transport(),
}
return instance
}
// Registry Address-of-Record registry
type Registry interface {
AddAor(aor sip.Uri, instance *ContactInstance) error
RemoveAor(aor sip.Uri) error
AorIsRegistered(aor sip.Uri) bool
UpdateContact(aor sip.Uri, instance *ContactInstance) error
RemoveContact(aor sip.Uri, instance *ContactInstance) error
GetContacts(aor sip.Uri) (*map[string]*ContactInstance, bool)
GetAllContacts() map[sip.Uri]map[string]*ContactInstance
HandleConnectionError(connError *transport.ConnectionError) bool
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。