func NewUDPNameServer(address v2net.Destination, dispatcher dispatcher.Interface) *UDPNameServer { s := &UDPNameServer{ address: address, requests: make(map[uint16]*PendingRequest), udpServer: udp.NewDispatcher(dispatcher), } return s }
// NewServer creates a new Server object. func NewServer(ctx context.Context, config *ServerConfig) (*Server, error) { space := app.SpaceFromContext(ctx) if space == nil { return nil, errors.New("Socks|Server: No space in context.") } s := &Server{ config: config, } space.OnInitialize(func() error { s.packetDispatcher = dispatcher.FromSpace(space) if s.packetDispatcher == nil { return errors.New("Socks|Server: Dispatcher is not found in the space.") } s.udpServer = udp.NewDispatcher(s.packetDispatcher) return nil }) return s, nil }