1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xiaochengtech-sip

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
request_line.go 1.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Xiaosong Gao Отправлено 05.04.2020 07:24 5082589
package sip
import (
"errors"
"fmt"
"strings"
)
// SIP请求消息的起始行(RFC3261-7.1)
type RequestLine struct {
Method string // 请求方法
RequestURI URI // SIP消息目标地址,无"<>"尖括号
SIPVersion string // SIP版本号
}
func NewRequestLine(str string) (rl RequestLine, err error) {
rl = RequestLine{}
err = rl.parse(str)
return
}
// 获取请求的用户名
func (rl RequestLine) Username() string {
return rl.RequestURI.Username
}
// 更新URI地址
func (rl *RequestLine) UpdateRequestURI(domain string) {
rl.RequestURI.Domain = domain
}
// 字符串表达
func (rl RequestLine) String() string {
return fmt.Sprintf("%s %s %s", rl.Method, rl.RequestURI.String(), rl.SIPVersion)
}
// 解析起始行
func (rl *RequestLine) parse(line string) (err error) {
// 使用空格拆分
args := strings.Split(line, " ")
if len(args) != 3 {
err = errors.New("sip: message request line format error")
return
}
// 生成
rl.Method = args[0]
if rl.RequestURI, err = NewURI(args[1]); err != nil {
return
}
rl.SIPVersion = args[2]
return
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/xiaochengtech-sip.git
git@api.gitlife.ru:oschina-mirror/xiaochengtech-sip.git
oschina-mirror
xiaochengtech-sip
xiaochengtech-sip
master