| 1234567891011121314151617181920212223242526272829303132 |
- package internet
- import "v2ray.com/core/common"
- type PacketHeader interface {
- Size() int
- Write([]byte) (int, error)
- }
- 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
- }
|