// compile // Copyright 2017 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. package p type NodeLink struct{} // A role our end of NodeLink is intended to play type LinkRole int64 const ( LinkServer LinkRole = iota // link created as server LinkClient // link created as client // for testing: linkNoRecvSend LinkRole = 1 << 16 // do not spawn serveRecv & serveSend linkFlagsMask LinkRole = (1<<32 - 1) << 16 ) func NewNodeLink(role LinkRole) *NodeLink { var nextConnId uint32 switch role &^ linkFlagsMask { case LinkServer: nextConnId = 0 // all initiated by us connId will be even case LinkClient: nextConnId = 1 // ----//---- odd default: panic("invalid conn role") } _ = nextConnId return nil }