| 12345678910111213141516171819202122232425262728293031323334353637383940 | 
							- package internet
 
- import (
 
- 	"context"
 
- 	"net"
 
- 	"v2ray.com/core/common"
 
- )
 
- type PacketHeader interface {
 
- 	Size() int
 
- 	Write([]byte) (int, error)
 
- }
 
- func CreatePacketHeader(config interface{}) (PacketHeader, error) {
 
- 	header, err := common.CreateObject(context.Background(), config)
 
- 	if err != nil {
 
- 		return nil, err
 
- 	}
 
- 	if h, ok := header.(PacketHeader); ok {
 
- 		return h, nil
 
- 	}
 
- 	return nil, newError("not a packet header")
 
- }
 
- type ConnectionAuthenticator interface {
 
- 	Client(net.Conn) net.Conn
 
- 	Server(net.Conn) net.Conn
 
- }
 
- func CreateConnectionAuthenticator(config interface{}) (ConnectionAuthenticator, error) {
 
- 	auth, err := common.CreateObject(context.Background(), config)
 
- 	if err != nil {
 
- 		return nil, err
 
- 	}
 
- 	if a, ok := auth.(ConnectionAuthenticator); ok {
 
- 		return a, nil
 
- 	}
 
- 	return nil, newError("not a ConnectionAuthenticator")
 
- }
 
 
  |