github.com/ice-blockchain/go/src@v0.0.0-20240403114104-1564d284e521/net/internal/socktest/switch_windows.go (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package socktest 6 7 import "syscall" 8 9 // Sockets maps a socket descriptor to the status of socket. 10 type Sockets map[syscall.Handle]Status 11 12 func (sw *Switch) sockso(s syscall.Handle) *Status { 13 sw.smu.RLock() 14 defer sw.smu.RUnlock() 15 so, ok := sw.sotab[s] 16 if !ok { 17 return nil 18 } 19 return &so 20 } 21 22 // addLocked returns a new Status without locking. 23 // sw.smu must be held before call. 24 func (sw *Switch) addLocked(s syscall.Handle, family, sotype, proto int) *Status { 25 sw.once.Do(sw.init) 26 so := Status{Cookie: cookie(family, sotype, proto)} 27 sw.sotab[s] = so 28 return &so 29 }