|
|
|
package internal
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/v2ray/v2ray-core/app"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Space struct {
|
|
|
|
packetDispatcher PacketDispatcherWithContext
|
|
|
|
dnsCache DnsCacheWithContext
|
|
|
|
pubsub PubsubWithContext
|
|
|
|
inboundHandlerManager InboundHandlerManagerWithContext
|
|
|
|
tag string
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewSpace(tag string, packetDispatcher PacketDispatcherWithContext, dnsCache DnsCacheWithContext, pubsub PubsubWithContext, inboundHandlerManager InboundHandlerManagerWithContext) *Space {
|
|
|
|
return &Space{
|
|
|
|
tag: tag,
|
|
|
|
packetDispatcher: packetDispatcher,
|
|
|
|
dnsCache: dnsCache,
|
|
|
|
pubsub: pubsub,
|
|
|
|
inboundHandlerManager: inboundHandlerManager,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (this *Space) HasPacketDispatcher() bool {
|
|
|
|
return this.packetDispatcher != nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (this *Space) PacketDispatcher() app.PacketDispatcher {
|
|
|
|
return &contextedPacketDispatcher{
|
|
|
|
packetDispatcher: this.packetDispatcher,
|
|
|
|
context: &contextImpl{
|
|
|
|
callerTag: this.tag,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (this *Space) HasDnsCache() bool {
|
|
|
|
return this.dnsCache != nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (this *Space) DnsCache() app.DnsCache {
|
|
|
|
return &contextedDnsCache{
|
|
|
|
dnsCache: this.dnsCache,
|
|
|
|
context: &contextImpl{
|
|
|
|
callerTag: this.tag,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (this *Space) HasPubsub() bool {
|
|
|
|
return this.pubsub != nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (this *Space) Pubsub() app.Pubsub {
|
|
|
|
return &contextedPubsub{
|
|
|
|
pubsub: this.pubsub,
|
|
|
|
context: &contextImpl{
|
|
|
|
callerTag: this.tag,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (this *Space) HasInboundHandlerManager() bool {
|
|
|
|
return this.inboundHandlerManager != nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (this *Space) InboundHandlerManager() app.InboundHandlerManager {
|
|
|
|
return &inboundHandlerManagerWithContext{
|
|
|
|
manager: this.inboundHandlerManager,
|
|
|
|
context: &contextImpl{
|
|
|
|
callerTag: this.tag,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|