| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | 
							- package testing
 
- import (
 
- 	"v2ray.com/core/common/buf"
 
- 	v2net "v2ray.com/core/common/net"
 
- 	"v2ray.com/core/proxy"
 
- 	"v2ray.com/core/transport/ray"
 
- )
 
- type TestPacketDispatcher struct {
 
- 	Destination chan v2net.Destination
 
- 	Handler     func(destination v2net.Destination, traffic ray.OutboundRay)
 
- }
 
- func NewTestPacketDispatcher(handler func(destination v2net.Destination, traffic ray.OutboundRay)) *TestPacketDispatcher {
 
- 	if handler == nil {
 
- 		handler = func(destination v2net.Destination, traffic ray.OutboundRay) {
 
- 			for {
 
- 				payload, err := traffic.OutboundInput().Read()
 
- 				if err != nil {
 
- 					break
 
- 				}
 
- 				output := buf.New()
 
- 				output.Append([]byte("Processed: "))
 
- 				output.Append(payload.Bytes())
 
- 				payload.Release()
 
- 				traffic.OutboundOutput().Write(output)
 
- 			}
 
- 			traffic.OutboundOutput().Close()
 
- 		}
 
- 	}
 
- 	return &TestPacketDispatcher{
 
- 		Destination: make(chan v2net.Destination),
 
- 		Handler:     handler,
 
- 	}
 
- }
 
- func (v *TestPacketDispatcher) DispatchToOutbound(session *proxy.SessionInfo) ray.InboundRay {
 
- 	traffic := ray.NewRay()
 
- 	v.Destination <- session.Destination
 
- 	go v.Handler(session.Destination, traffic)
 
- 	return traffic
 
- }
 
 
  |