mirror of
https://github.com/giongto35/cloud-game.git
synced 2026-07-20 16:54:25 +00:00
* Add initial external configuration files support. These external configuration files allow changing app params at the runtime without recompilation. * Find config files with specified directory in the tests * Add aspect ratio recalculation config * Clean code * Add new configuration files into the Docker container image * Add shared core and config paths into the Libretro cores config * Split ROM <-> Emulator mapping between workers and coordinators * Extract coordinator config * Add shared worker/coordinator server config * Add explicit embedded shared worker/coordinator struct for auto-config reflection fill * Remove default stun/turn servers from the config * Extract and add new ice servers config structures * Update coordinator config params * Add auto emulation lib loader based on the runtime OS/arch * Update configuration structures * Remove shared config embedding * Add missing network config params * Add game library external config * Remove unused config parameters * Add WebRTC encoder external options * Add user dir for config search * Update config loader * Update config * Add generic downloader with Grab lib implementation * Add a simple file downloader backed by the grab lib * Add initial Libretro core repos abstractions * Expose compression info for Libretro cores repository records * Add pipe-based abstract file downloader * Refactor downloader * Refactor Libretro repos * Add worker coresync stubs * Add multiprocess-safe HTTP-based core manager implementation * Remove Libretro cores from the repo * Keep custom N64 cores in te repo for now * Add Libretro cores repo select in the config * Fix http manager repo switch * Cleanup code * Add greedy Libretro lib loader * Don't crash when arch map is not set * Disable dynamic recompiler for pcsx core by default since it's could cause a crash * Use global Libretro dynalib handler * Shorten the default Libretro cores store path * Update zip extractor implementation * Remove explicit fig lib field markings * Add config note to the README file * Add GitHub repo backend for the core downloader * Fix GitHub repo param list in the manager factory * Add env variables reader with CLOUD_GAME prefix * Re-optimize ice server info struct custom marshaler
57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package webrtc
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/giongto35/cloud-game/v2/pkg/config/webrtc"
|
|
)
|
|
|
|
type Replacement struct {
|
|
From string
|
|
To string
|
|
}
|
|
|
|
func NewIceServer(url string) webrtc.IceServer {
|
|
return webrtc.IceServer{
|
|
Url: url,
|
|
}
|
|
}
|
|
|
|
func NewIceServerCredentials(url string, user string, credential string) webrtc.IceServer {
|
|
return webrtc.IceServer{
|
|
Url: url,
|
|
Username: user,
|
|
Credential: credential,
|
|
}
|
|
}
|
|
|
|
func ToJson(iceServers []webrtc.IceServer, replacements ...Replacement) string {
|
|
var sb strings.Builder
|
|
sn, n := len(iceServers), len(replacements)
|
|
if sn > 0 {
|
|
sb.Grow(sn * 64)
|
|
}
|
|
sb.WriteString("[")
|
|
for i, ice := range iceServers {
|
|
if i > 0 {
|
|
sb.WriteString(",{")
|
|
} else {
|
|
sb.WriteString("{")
|
|
}
|
|
if n > 0 {
|
|
for _, replacement := range replacements {
|
|
ice.Url = strings.Replace(ice.Url, "{"+replacement.From+"}", replacement.To, -1)
|
|
}
|
|
}
|
|
sb.WriteString("\"urls\":\"" + ice.Url + "\"")
|
|
if ice.Username != "" {
|
|
sb.WriteString(",\"username\":\"" + ice.Username + "\"")
|
|
}
|
|
if ice.Credential != "" {
|
|
sb.WriteString(",\"credential\":\"" + ice.Credential + "\"")
|
|
}
|
|
sb.WriteString("}")
|
|
}
|
|
sb.WriteString("]")
|
|
return sb.String()
|
|
}
|