| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- 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"
- }
|