| 123456789101112131415161718192021222324252627282930313233343536373839 | 
							- package dispatcher
 
- import (
 
- 	"github.com/v2ray/v2ray-core/app"
 
- 	v2net "github.com/v2ray/v2ray-core/common/net"
 
- 	"github.com/v2ray/v2ray-core/transport/ray"
 
- )
 
- const (
 
- 	APP_ID = app.ID(1)
 
- )
 
- // PacketDispatcher dispatch a packet and possibly further network payload to its destination.
 
- type PacketDispatcher interface {
 
- 	DispatchToOutbound(packet v2net.Packet) ray.InboundRay
 
- }
 
- type packetDispatcherWithContext interface {
 
- 	DispatchToOutbound(context app.Context, packet v2net.Packet) ray.InboundRay
 
- }
 
- type contextedPacketDispatcher struct {
 
- 	context          app.Context
 
- 	packetDispatcher packetDispatcherWithContext
 
- }
 
- func (this *contextedPacketDispatcher) DispatchToOutbound(packet v2net.Packet) ray.InboundRay {
 
- 	return this.packetDispatcher.DispatchToOutbound(this.context, packet)
 
- }
 
- func init() {
 
- 	app.RegisterApp(APP_ID, func(context app.Context, obj interface{}) interface{} {
 
- 		packetDispatcher := obj.(packetDispatcherWithContext)
 
- 		return &contextedPacketDispatcher{
 
- 			context:          context,
 
- 			packetDispatcher: packetDispatcher,
 
- 		}
 
- 	})
 
- }
 
 
  |