diff --git a/capability.go b/capability.go new file mode 100644 index 000000000..ed84adc3a --- /dev/null +++ b/capability.go @@ -0,0 +1,36 @@ +package core + +type Capability byte + +const ( + TCPConnection = Capability(0x01) + UDPConnection = Capability(0x02) +) + +type Capabilities interface { + HasCapability(cap Capability) bool + AddCapability(cap Capability) +} + +type listCapabilities struct { + data []Capability +} + +func NewCapabilites() Capabilities { + return &listCapabilities{ + data: make([]Capability, 0, 16), + } +} + +func (c *listCapabilities) HasCapability(cap Capability) bool { + for _, v := range c.data { + if v == cap { + return true + } + } + return false +} + +func (c *listCapabilities) AddCapability(cap Capability) { + c.data = append(c.data, cap) +}