mirror of
https://github.com/golang/go.git
synced 2025-05-05 23:53:05 +00:00
For #20322 For #51572 Change-Id: Id0b4799d097d01128e98ba4cc0092298357bca45 Reviewed-on: https://go-review.googlesource.com/c/go/+/389935 Trust: Ian Lance Taylor <iant@golang.org> Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
30 lines
708 B
Go
30 lines
708 B
Go
// Copyright 2015 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
//go:build unix || (js && wasm)
|
|
|
|
package socktest
|
|
|
|
// Sockets maps a socket descriptor to the status of socket.
|
|
type Sockets map[int]Status
|
|
|
|
func (sw *Switch) sockso(s int) *Status {
|
|
sw.smu.RLock()
|
|
defer sw.smu.RUnlock()
|
|
so, ok := sw.sotab[s]
|
|
if !ok {
|
|
return nil
|
|
}
|
|
return &so
|
|
}
|
|
|
|
// addLocked returns a new Status without locking.
|
|
// sw.smu must be held before call.
|
|
func (sw *Switch) addLocked(s, family, sotype, proto int) *Status {
|
|
sw.once.Do(sw.init)
|
|
so := Status{Cookie: cookie(family, sotype, proto)}
|
|
sw.sotab[s] = so
|
|
return &so
|
|
}
|