| // 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. |
| // A role our end of NodeLink is intended to play |
| LinkServer LinkRole = iota // link created as server |
| LinkClient // link created as client |
| linkNoRecvSend LinkRole = 1 << 16 // do not spawn serveRecv & serveSend |
| linkFlagsMask LinkRole = (1<<32 - 1) << 16 |
| func NewNodeLink(role LinkRole) *NodeLink { |
| switch role &^ linkFlagsMask { |
| nextConnId = 0 // all initiated by us connId will be even |
| nextConnId = 1 // ----//---- odd |
| panic("invalid conn role") |