| 1234567891011121314151617181920212223242526272829303132333435363738394041 | 
							- package controller
 
- import (
 
- 	"github.com/v2ray/v2ray-core/app"
 
- 	"github.com/v2ray/v2ray-core/app/internal"
 
- )
 
- // A SpaceController is supposed to be used by a shell to create Spaces. It should not be used
 
- // directly by proxies.
 
- type SpaceController struct {
 
- 	packetDispatcher      internal.PacketDispatcherWithContext
 
- 	dnsCache              internal.DnsCacheWithContext
 
- 	pubsub                internal.PubsubWithContext
 
- 	inboundHandlerManager internal.InboundHandlerManagerWithContext
 
- }
 
- func New() *SpaceController {
 
- 	return new(SpaceController)
 
- }
 
- func (this *SpaceController) Bind(object interface{}) {
 
- 	if packetDispatcher, ok := object.(internal.PacketDispatcherWithContext); ok {
 
- 		this.packetDispatcher = packetDispatcher
 
- 	}
 
- 	if dnsCache, ok := object.(internal.DnsCacheWithContext); ok {
 
- 		this.dnsCache = dnsCache
 
- 	}
 
- 	if pubsub, ok := object.(internal.PubsubWithContext); ok {
 
- 		this.pubsub = pubsub
 
- 	}
 
- 	if inboundHandlerManager, ok := object.(internal.InboundHandlerManagerWithContext); ok {
 
- 		this.inboundHandlerManager = inboundHandlerManager
 
- 	}
 
- }
 
- func (this *SpaceController) ForContext(tag string) app.Space {
 
- 	return internal.NewSpace(tag, this.packetDispatcher, this.dnsCache, this.pubsub, this.inboundHandlerManager)
 
- }
 
 
  |