Files
agent-radar 2ed3415fb7
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

97 lines
2.1 KiB
Go

package linkmanager
import (
"context"
"io"
"net"
"sync"
"sync/atomic"
"time"
)
type trackingConn struct {
closeCount atomic.Int32
}
func newTrackingConn() *trackingConn {
return &trackingConn{}
}
func (*trackingConn) Read([]byte) (int, error) { return 0, io.EOF }
func (*trackingConn) Write(p []byte) (int, error) { return len(p), nil }
func (*trackingConn) LocalAddr() net.Addr { return testAddr("local") }
func (*trackingConn) RemoteAddr() net.Addr { return testAddr("remote") }
func (*trackingConn) SetDeadline(time.Time) error { return nil }
func (*trackingConn) SetReadDeadline(time.Time) error { return nil }
func (*trackingConn) SetWriteDeadline(time.Time) error { return nil }
func (c *trackingConn) Close() error {
c.closeCount.Add(1)
return nil
}
type testAddr string
func (testAddr) Network() string { return "test" }
func (address testAddr) String() string { return string(address) }
type fakeLink struct {
openCount atomic.Int32
closeCount atomic.Int32
incoming chan net.Conn
closed chan struct{}
once sync.Once
}
type cancelableOpenLink struct {
*fakeLink
cancelNext atomic.Bool
}
func (link *cancelableOpenLink) OpenStream(ctx context.Context) (net.Conn, error) {
if link.cancelNext.CompareAndSwap(true, false) {
return nil, ctx.Err()
}
return link.fakeLink.OpenStream(ctx)
}
func newFakeLink() *fakeLink {
return &fakeLink{
incoming: make(chan net.Conn, 8),
closed: make(chan struct{}),
}
}
func (link *fakeLink) OpenStream(context.Context) (net.Conn, error) {
select {
case <-link.closed:
return nil, net.ErrClosed
default:
}
link.openCount.Add(1)
return newTrackingConn(), nil
}
func (link *fakeLink) AcceptStream(ctx context.Context) (net.Conn, error) {
select {
case <-ctx.Done():
return nil, ctx.Err()
case <-link.closed:
return nil, net.ErrClosed
case stream := <-link.incoming:
return stream, nil
}
}
func (link *fakeLink) Close() error {
link.once.Do(func() {
link.closeCount.Add(1)
close(link.closed)
})
return nil
}
func (link *fakeLink) queueIncoming(stream net.Conn) {
link.incoming <- stream
}