1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-07-07 05:44:28 -04:00
v2fly/transport/internet/header.go

33 lines
669 B
Go
Raw Normal View History

2016-12-08 10:27:41 -05:00
package internet
import "v2ray.com/core/common"
type PacketHeader interface {
Size() int
2016-12-09 06:08:25 -05:00
Write([]byte) (int, error)
2016-12-08 10:27:41 -05:00
}
type PacketHeaderFactory interface {
Create(interface{}) PacketHeader
}
var (
headerCache = make(map[string]PacketHeaderFactory)
)
func RegisterPacketHeader(name string, factory PacketHeaderFactory) error {
if _, found := headerCache[name]; found {
return common.ErrDuplicatedName
}
headerCache[name] = factory
return nil
}
func CreatePacketHeader(name string, config interface{}) (PacketHeader, error) {
factory, found := headerCache[name]
if !found {
return nil, common.ErrObjectNotFound
}
return factory.Create(config), nil
}