Quellcode durchsuchen

Merge remote-tracking branch 'fork/stack_set' into move-networking

Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
Michael Crosby vor 11 Jahren
Ursprung
Commit
78b3d89f87
1 geänderte Dateien mit 10 neuen und 9 gelöschten Zeilen
  1. 10 9
      networkdriver/portallocator/ipset.go

+ 10 - 9
networkdriver/portallocator/ipset.go

@@ -1,17 +1,18 @@
 package ipallocator
 
 import (
+	"sort"
 	"sync"
 )
 
 // iPSet is a thread-safe sorted set and a stack.
 type iPSet struct {
 	sync.RWMutex
-	set []string
+	set []int32
 }
 
 // Push takes a string and adds it to the set. If the elem aready exists, it has no effect.
-func (s *iPSet) Push(elem string) {
+func (s *iPSet) Push(elem int32) {
 	s.RLock()
 	for i, e := range s.set {
 		if e == elem {
@@ -24,18 +25,18 @@ func (s *iPSet) Push(elem string) {
 	s.Lock()
 	s.set = append(s.set, elem)
 	// Make sure the list is always sorted
-	sort.Strings(s.set)
+	sort.Ints(s.set)
 	s.Unlock()
 }
 
 // Pop is an alias to PopFront()
-func (s *iPSet) Pop() string {
+func (s *iPSet) Pop() int32 {
 	return s.PopFront()
 }
 
 // Pop returns the first elemen from the list and removes it.
-// If the list is empty, it returns an empty string
-func (s *iPSet) PopFront() string {
+// If the list is empty, it returns 0
+func (s *iPSet) PopFront() int32 {
 	s.RLock()
 
 	for i, e := range s.set {
@@ -53,7 +54,7 @@ func (s *iPSet) PopFront() string {
 // PullBack retrieve the last element of the list.
 // The element is not removed.
 // If the list is empty, an empty element is returned.
-func (s *iPSet) PullBack() string {
+func (s *iPSet) PullBack() int32 {
 	if len(s.set) == 0 {
 		return ""
 	}
@@ -61,7 +62,7 @@ func (s *iPSet) PullBack() string {
 }
 
 // Exists checks if the given element present in the list.
-func (s *iPSet) Exists(elem string) bool {
+func (s *iPSet) Exists(elem int32) bool {
 	for _, e := range s.set {
 		if e == elem {
 			return true
@@ -72,7 +73,7 @@ func (s *iPSet) Exists(elem string) bool {
 
 // Remove removes an element from the list.
 // If the element is not found, it has no effect.
-func (s *iPSet) Remove(elem string) {
+func (s *iPSet) Remove(elem int32) {
 	for i, e := range s.set {
 		if e == elem {
 			s.set = append(s.set[:i], s.set[i+1:]...)