| 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)
- }
|