1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-06-16 12:45:24 +00:00
v2fly/app/proxyman/proxyman.go

70 lines
1.5 KiB
Go
Raw Normal View History

2016-01-31 16:01:28 +00:00
package proxyman
import (
2016-05-18 06:05:52 +00:00
"sync"
2016-08-20 18:55:45 +00:00
"v2ray.com/core/app"
"v2ray.com/core/proxy"
2016-01-31 16:01:28 +00:00
)
const (
2016-05-18 06:05:52 +00:00
APP_ID_INBOUND_MANAGER = app.ID(4)
APP_ID_OUTBOUND_MANAGER = app.ID(6)
2016-01-31 16:01:28 +00:00
)
type InboundHandlerManager interface {
GetHandler(tag string) (proxy.InboundHandler, int)
}
2016-05-18 06:05:52 +00:00
type OutboundHandlerManager interface {
GetHandler(tag string) proxy.OutboundHandler
GetDefaultHandler() proxy.OutboundHandler
}
type DefaultOutboundHandlerManager struct {
sync.RWMutex
defaultHandler proxy.OutboundHandler
taggedHandler map[string]proxy.OutboundHandler
2016-01-31 16:01:28 +00:00
}
2016-05-18 15:12:04 +00:00
func NewDefaultOutboundHandlerManager() *DefaultOutboundHandlerManager {
return &DefaultOutboundHandlerManager{
taggedHandler: make(map[string]proxy.OutboundHandler),
}
}
func (this *DefaultOutboundHandlerManager) Release() {
}
2016-05-18 06:05:52 +00:00
func (this *DefaultOutboundHandlerManager) GetDefaultHandler() proxy.OutboundHandler {
this.RLock()
defer this.RUnlock()
if this.defaultHandler == nil {
return nil
}
return this.defaultHandler
2016-01-31 16:01:28 +00:00
}
2016-05-18 06:05:52 +00:00
func (this *DefaultOutboundHandlerManager) SetDefaultHandler(handler proxy.OutboundHandler) {
this.Lock()
defer this.Unlock()
this.defaultHandler = handler
2016-01-31 16:01:28 +00:00
}
2016-05-18 06:05:52 +00:00
func (this *DefaultOutboundHandlerManager) GetHandler(tag string) proxy.OutboundHandler {
this.RLock()
defer this.RUnlock()
if handler, found := this.taggedHandler[tag]; found {
return handler
}
return nil
}
func (this *DefaultOutboundHandlerManager) SetHandler(tag string, handler proxy.OutboundHandler) {
this.Lock()
defer this.Unlock()
this.taggedHandler[tag] = handler
2016-01-31 16:01:28 +00:00
}