| 1234567891011121314151617181920212223242526272829303132333435363738 |
- package testing
- import (
- v2net "github.com/v2ray/v2ray-core/common/net"
- "github.com/v2ray/v2ray-core/transport/ray"
- )
- type TestPacketDispatcher struct {
- Destination chan v2net.Destination
- Handler func(packet v2net.Packet, traffic ray.OutboundRay)
- }
- func NewTestPacketDispatcher(handler func(packet v2net.Packet, traffic ray.OutboundRay)) *TestPacketDispatcher {
- if handler == nil {
- handler = func(packet v2net.Packet, traffic ray.OutboundRay) {
- for {
- payload, err := traffic.OutboundInput().Read()
- if err != nil {
- break
- }
- traffic.OutboundOutput().Write(payload.Prepend([]byte("Processed: ")))
- }
- traffic.OutboundOutput().Close()
- }
- }
- return &TestPacketDispatcher{
- Destination: make(chan v2net.Destination),
- Handler: handler,
- }
- }
- func (this *TestPacketDispatcher) DispatchToOutbound(packet v2net.Packet) ray.InboundRay {
- traffic := ray.NewRay()
- this.Destination <- packet.Destination()
- go this.Handler(packet, traffic)
- return traffic
- }
|