mirror of
https://github.com/autc04/Retro68.git
synced 2024-12-03 10:49:58 +00:00
30 lines
745 B
Go
30 lines
745 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.
|
||
|
|
||
|
// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
|
||
|
|
||
|
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
|
||
|
}
|