mirror of
https://github.com/giongto35/cloud-game.git
synced 2026-07-21 00:59:22 +00:00
(experimental feature) Before a worker can start, it should have a configuration file. In case if such a file is not found it may request configuration from the coordinator to which it connected. Added example logic if a worker is needed to be blocked until a successful packet exchange with a coordinator is being made. * Add error return for config loader * Add config loaded flag to worker * Add zone flag * Add a custom mutex lock with timout * Refactor worker runtime * Refactor internal api * Extract monitoring server config * Extract worker HTTP(S) server * Add generic sub-server interface * Add internal coordinator API * Add internal routes and handlers to worker * Add internal worker API * Refactor worker run * Migrate serverId call to new API * Add packet handler to cws * Extract handlers for internal worker routes in coordinator * Pass worker to the worker internal heandlers * Cleanup worker handlers in coordinator * Add closeRoom packet handler to the API * Add GetRoom packet handler to the API * Add RegisterRoom packet handler to the API * Add IceCandidate packet handler to the API (internal and browser) * Add Heartbeat packet handler to the API (internal and browser) * Rename worker routes init function * Extract worker/coordinator internal ws handlers * Update timed locker * Allow sequential timed locks * Add config request from workers * Add nil check for the route registration functions
44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
package coordinator
|
|
|
|
import (
|
|
"github.com/giongto35/cloud-game/v2/pkg/config"
|
|
"github.com/giongto35/cloud-game/v2/pkg/config/emulator"
|
|
"github.com/giongto35/cloud-game/v2/pkg/config/monitoring"
|
|
"github.com/giongto35/cloud-game/v2/pkg/config/shared"
|
|
webrtcConfig "github.com/giongto35/cloud-game/v2/pkg/config/webrtc"
|
|
"github.com/giongto35/cloud-game/v2/pkg/games"
|
|
flag "github.com/spf13/pflag"
|
|
)
|
|
|
|
type Config struct {
|
|
Coordinator struct {
|
|
PublicDomain string
|
|
PingServer string
|
|
DebugHost string
|
|
Library games.Config
|
|
Monitoring monitoring.ServerMonitoringConfig
|
|
Server shared.Server
|
|
}
|
|
Emulator emulator.Emulator
|
|
Environment shared.Environment
|
|
Webrtc webrtcConfig.Webrtc
|
|
}
|
|
|
|
// allows custom config path
|
|
var configPath string
|
|
|
|
func NewConfig() (conf Config) {
|
|
err := config.LoadConfig(&conf, configPath)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return
|
|
}
|
|
|
|
func (c *Config) ParseFlags() {
|
|
c.Environment.WithFlags()
|
|
c.Coordinator.Server.WithFlags()
|
|
flag.IntVar(&c.Coordinator.Monitoring.Port, "monitoring.port", c.Coordinator.Monitoring.Port, "Monitoring server port")
|
|
flag.StringVarP(&configPath, "conf", "c", configPath, "Set custom configuration file path")
|
|
flag.Parse()
|
|
}
|