| 123456789101112131415161718192021222324252627282930313233343536 | package controllerimport (	"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}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	}}func (this *SpaceController) ForContext(tag string) app.Space {	return internal.NewSpace(tag, this.packetDispatcher, this.dnsCache, this.pubsub)}
 |