summaryrefslogtreecommitdiff
path: root/vendor/github.com/pion/sdp/v3/common_description.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pion/sdp/v3/common_description.go')
-rw-r--r--vendor/github.com/pion/sdp/v3/common_description.go110
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"
+}