()
| 674 | } |
| 675 | |
| 676 | func allocateConnAndSeq() (connID uint64, seqNo uint64) { |
| 677 | connIDLock.Lock() |
| 678 | defer connIDLock.Unlock() |
| 679 | |
| 680 | if len(connIDAvail) == 0 { |
| 681 | // generate one |
| 682 | connID = randSource.Uint64() |
| 683 | seqNo = atomic.AddUint64(&globalSeqNo, 1) |
| 684 | return |
| 685 | } |
| 686 | |
| 687 | // pop one conn |
| 688 | connID = connIDAvail[0] |
| 689 | connIDAvail = connIDAvail[1:] |
| 690 | seqNo = atomic.AddUint64(&globalSeqNo, 1) |
| 691 | |
| 692 | return |
| 693 | } |
| 694 | |
| 695 | func putBackConn(connID uint64) { |
| 696 | connIDLock.Lock() |
no outgoing calls