diff options
Diffstat (limited to 'vendor/github.com/pion/sdp/v3/common_description.go')
-rw-r--r-- | vendor/github.com/pion/sdp/v3/common_description.go | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/vendor/github.com/pion/sdp/v3/common_description.go b/vendor/github.com/pion/sdp/v3/common_description.go new file mode 100644 index 0000000..1174be4 --- /dev/null +++ b/vendor/github.com/pion/sdp/v3/common_description.go @@ -0,0 +1,110 @@ +package sdp + +import ( + "strconv" + "strings" +) + +// Information describes the "i=" field which provides textual information +// about the session. +type Information string + +func (i Information) String() string { + return string(i) +} + +// ConnectionInformation defines the representation for the "c=" field +// containing connection data. +type ConnectionInformation struct { + NetworkType string + AddressType string + Address *Address +} + +func (c ConnectionInformation) String() string { + parts := []string{c.NetworkType, c.AddressType} + if c.Address != nil && c.Address.String() != "" { + parts = append(parts, c.Address.String()) + } + return strings.Join(parts, " ") +} + +// Address desribes a structured address token from within the "c=" field. +type Address struct { + Address string + TTL *int + Range *int +} + +func (c *Address) String() string { + var parts []string + parts = append(parts, c.Address) + if c.TTL != nil { + parts = append(parts, strconv.Itoa(*c.TTL)) + } + + if c.Range != nil { + parts = append(parts, strconv.Itoa(*c.Range)) + } + + return strings.Join(parts, "/") +} + +// Bandwidth describes an optional field which denotes the proposed bandwidth +// to be used by the session or media. +type Bandwidth struct { + Experimental bool + Type string + Bandwidth uint64 +} + +func (b Bandwidth) String() string { + var output string + if b.Experimental { + output += "X-" + } + output += b.Type + ":" + strconv.FormatUint(b.Bandwidth, 10) + return output +} + +// EncryptionKey describes the "k=" which conveys encryption key information. +type EncryptionKey string + +func (s EncryptionKey) String() string { + return string(s) +} + +// Attribute describes the "a=" field which represents the primary means for +// extending SDP. +type Attribute struct { + Key string + Value string +} + +// NewPropertyAttribute constructs a new attribute +func NewPropertyAttribute(key string) Attribute { + return Attribute{ + Key: key, + } +} + +// NewAttribute constructs a new attribute +func NewAttribute(key, value string) Attribute { + return Attribute{ + Key: key, + Value: value, + } +} + +func (a Attribute) String() string { + output := a.Key + if len(a.Value) > 0 { + output += ":" + a.Value + } + return output +} + +// IsICECandidate returns true if the attribute key equals "candidate". +func (a Attribute) IsICECandidate() bool { + return a.Key == "candidate" +} |