func NewServer()

in lib/server.go [68:103]


func NewServer(config *Config, serverMode bool, personalizedLogger PersonalizedLogger) (*Server, error) {
	conn, err := net.ListenUDP("udp", config.Addr)
	if err != nil {
		return nil, err
	}

	// setup logger
	var loggerHelper = &loggerHelperImpl{
		version:            config.Version,
		personalizedLogger: personalizedLogger,
	}

	server := &Server{
		server: serverMode,
		conn:   conn,
		logger: loggerHelper,
		config: config,
	}

	// pool to reuse packet buffers
	server.bufPool = sync.Pool{
		New: func() interface{} {
			return make([]byte, server.GetConfig().PacketBufSize)
		},
	}

	glog.Infof("Setting up throttle: Cache Size: %d - Cache Rate: %d - Request Rate: %d",
		config.CacheSize, config.CacheRate, config.Rate)
	throttle, err := NewThrottle(config.CacheSize, config.CacheRate, config.Rate)
	if err != nil {
		return nil, err
	}
	server.throttle = throttle

	return server, nil
}