| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | package mocksimport (	"io"	"sync"	"github.com/v2ray/v2ray-core/app"	v2net "github.com/v2ray/v2ray-core/common/net"	"github.com/v2ray/v2ray-core/proxy/common/connhandler")type InboundConnectionHandler struct {	Port       v2net.Port	space      *app.Space	ConnInput  io.Reader	ConnOutput io.Writer}func (this *InboundConnectionHandler) Listen(port v2net.Port) error {	this.Port = port	return nil}func (this *InboundConnectionHandler) Communicate(packet v2net.Packet) error {	ray := this.space.PacketDispatcher().DispatchToOutbound(packet)	input := ray.InboundInput()	output := ray.InboundOutput()	readFinish := &sync.Mutex{}	writeFinish := &sync.Mutex{}	readFinish.Lock()	writeFinish.Lock()	go func() {		v2net.ReaderToChan(input, this.ConnInput)		close(input)		readFinish.Unlock()	}()	go func() {		v2net.ChanToWriter(this.ConnOutput, output)		writeFinish.Unlock()	}()	readFinish.Lock()	writeFinish.Lock()	return nil}func (this *InboundConnectionHandler) Create(space *app.Space, config interface{}) (connhandler.InboundConnectionHandler, error) {	this.space = space	return this, nil}
 |