-
Notifications
You must be signed in to change notification settings - Fork 0
/
tcptype.go
48 lines (43 loc) · 1.11 KB
/
tcptype.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package ice
import "strings"
// TCPType is the type of ICE TCP candidate as described in
// ttps://tools.ietf.org/html/rfc6544#section-4.5
type TCPType int
const (
// TCPTypeUnspecified is the default value. For example UDP candidates do not
// need this field.
TCPTypeUnspecified TCPType = iota
// TCPTypeActive is active TCP candidate, which initiates TCP connections.
TCPTypeActive
// TCPTypePassive is passive TCP candidate, only accepts TCP connections.
TCPTypePassive
// TCPTypeSimultaneousOpen is like active and passive at the same time.
TCPTypeSimultaneousOpen
)
// NewTCPType creates a new TCPType from string.
func NewTCPType(value string) TCPType {
switch strings.ToLower(value) {
case "active":
return TCPTypeActive
case "passive":
return TCPTypePassive
case "so":
return TCPTypeSimultaneousOpen
default:
return TCPTypeUnspecified
}
}
func (t TCPType) String() string {
switch t {
case TCPTypeUnspecified:
return ""
case TCPTypeActive:
return "active"
case TCPTypePassive:
return "passive"
case TCPTypeSimultaneousOpen:
return "so"
default:
return ErrUnknownType.Error()
}
}