Home | History | Annotate | Download | only in socktest
      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 }
     30