func (wp *WorkersPool) GetWorkerForMerchant(merchant string) *Worker { pos := wp.workerPosition(merchant) if -1 == pos { config := config.GetConfig() worker := newWorker(merchant, config.RequestLogDir) wp.appendWorker(worker) pos = wp.workerPosition(merchant) go worker.Serve() } return (*wp)[pos] }
func main() { runtime.GOMAXPROCS(runtime.NumCPU()) defer glog.Flush() var environment string var configFile string var pidfile string flag.StringVar(&environment, "environment", "", "Setup environment: production, development") flag.StringVar(&configFile, "config-file", "", "Configuration file") flag.StringVar(&pidfile, "pidfile", "", "PID file") flag.Parse() pid := syscall.Getpid() glog.Info(pid) spid := fmt.Sprintf("%v", pid) err := ioutil.WriteFile(pidfile, []byte(spid), 0644) if err != nil { glog.Fatalf("Could not open pidfile. %v", err) panic(err) } config.ParseConfig(environment, configFile) waitForStop := make(chan bool, 1) config := config.GetConfig() server := server.NewServer(config) glog.Infof("New Server is starting with configuration %+v", config) glog.Flush() go server.Serve() signalChan := make(chan os.Signal) signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP, syscall.SIGQUIT) signal := <-signalChan glog.V(2).Infof("Received %v signal. Stopping...", signal) glog.Flush() server.Stop(waitForStop) <-waitForStop glog.Info("EXIT") }
func NewConnection() *sql.DB { config := config.GetConfig() connectionString := fmt.Sprintf("user=%v password=%v dbname=%v sslmode=disable", config.DatabaseUser, config.DatabasePassword, config.DatabaseName) db, ok := sql.Open("postgres", connectionString) if ok != nil { panic(ok) } err := db.Ping() if err != nil { panic(err.Error()) } return db }