/* * Copyright 2019 Banco Bilbao Vizcaya Argentaria, S.A. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package server import ( "sync" "github.com/BBVA/kapow/internal/server/control" "github.com/BBVA/kapow/internal/server/data" "github.com/BBVA/kapow/internal/server/user" ) type ServerConfig struct { ControlBindAddr, DataBindAddr, UserBindAddr, KeyFile, CertFile, ClientCaFile string ClientAuth bool } // StartServer Starts one instance of each server in a goroutine and remains listening on a channel for trace events generated by them func StartServer(config ServerConfig) { var wg = sync.WaitGroup{} wg.Add(3) go control.Run(config.ControlBindAddr, &wg) go data.Run(config.DataBindAddr, &wg) go user.Run(config.UserBindAddr, &wg, config.CertFile, config.KeyFile, config.ClientCaFile, config.ClientAuth) // Wait for servers signals in order to return wg.Wait() }