github.com/flyinox/gosm@v0.0.0-20171117061539-16768cb62077/src/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  }