github.com/packtpublishing/learning-functional-programming-in-go@v0.0.0-20230130084745-8b849f6d58c4/Chapter07/func-param/src/server/server_options.go (about)

     1  package server
     2  
     3  import (
     4  	. "utils"
     5  	"errors"
     6  )
     7  
     8  type ServerOption func(*options) error
     9  
    10  func MaxNumber(n int) ServerOption {
    11  	return func(o *options) error {
    12  		o.maxNumber = n
    13  		return nil
    14  	}
    15  }
    16  
    17  func MaxConcurrentConnections(n int) ServerOption {
    18  	return func(o *options) error {
    19  		if n > Config.MaxConcurrentConnections {
    20  			return errors.New("error setting MaxConcurrentConnections")
    21  		}
    22  		o.maxConcurrentConnections = n
    23  		return nil
    24  	}
    25  }
    26  
    27  type convert func(int) (string, error)
    28  
    29  func FormatNumber(fn convert) ServerOption {
    30  	return func(o *options) (err error) {
    31  		o.convertFn = fn
    32  		return
    33  	}
    34  }
    35  
    36  func UseNumberHandler(b bool) ServerOption {
    37  	return func(o *options) error  {
    38  		o.useNumberHandler = b
    39  		return nil
    40  	}
    41  }
    42