capability.go 612 B

123456789101112131415161718192021222324252627282930313233343536
  1. package core
  2. type Capability byte
  3. const (
  4. TCPConnection = Capability(0x01)
  5. UDPConnection = Capability(0x02)
  6. )
  7. type Capabilities interface {
  8. HasCapability(cap Capability) bool
  9. AddCapability(cap Capability)
  10. }
  11. type listCapabilities struct {
  12. data []Capability
  13. }
  14. func NewCapabilities() Capabilities {
  15. return &listCapabilities{
  16. data: make([]Capability, 0, 16),
  17. }
  18. }
  19. func (c *listCapabilities) HasCapability(cap Capability) bool {
  20. for _, v := range c.data {
  21. if v == cap {
  22. return true
  23. }
  24. }
  25. return false
  26. }
  27. func (c *listCapabilities) AddCapability(cap Capability) {
  28. c.data = append(c.data, cap)
  29. }