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