More debug output and servers refresh fix.

Fixed servers lists refresh. Despite on what list we're updating
(all servers or only favorites) server item should be updated in
both.
This commit is contained in:
Stanislav Nikitin 2016-10-07 02:50:52 +05:00
parent baf733f171
commit 51b23fa68f
4 changed files with 35 additions and 23 deletions

View File

@ -101,6 +101,7 @@ func (c *Cache) initializeStorages() {
}
func (c *Cache) LoadServers() {
fmt.Println("Loading servers into cache...")
c.Servers = make(map[string]*cachemodels.Server)
// Getting servers from database.
raw_servers := []datamodels.Server{}
@ -129,4 +130,5 @@ func (c *Cache) LoadServers() {
c.Servers[key].Server.ExtendedConfig = server.ExtendedConfig
c.Servers[key].Server.PlayersInfo = server.PlayersInfo
}
fmt.Println("Load completed.")
}

View File

@ -23,6 +23,9 @@ type Colorizer struct {
func (c *Colorizer) Fix(data string) string {
result := ""
data = html.EscapeString(data)
data_splitted := strings.Split(data, "^")
if len(data_splitted) > 1 {
for item := range data_splitted {
@ -32,7 +35,7 @@ func (c *Colorizer) Fix(data string) string {
if !ok {
colorcode = "#000000"
}
result += "<span foreground=\"" + colorcode + "\">" + html.EscapeString(string([]rune(data_splitted[item])[1:])) + "</span>"
result += "<span foreground=\"" + colorcode + "\">" + string([]rune(data_splitted[item])[1:]) + "</span>"
} else {
result += data_splitted[item]
}

View File

@ -14,7 +14,7 @@ import (
"errors"
"fmt"
"net"
"runtime"
//"runtime"
"strconv"
"strings"
"sync"
@ -34,8 +34,9 @@ type Pooler struct {
func (p *Pooler) Initialize() {
fmt.Println("Initializing requester goroutine pooler...")
// ToDo: figure out how to make this work nice.
p.maxrequests = runtime.NumCPU() * 2000
p.maxrequests = 500
p.pp = "\377\377\377\377"
fmt.Println("Pooler initialized")
}
// Servers pinging pooler. Should be started as goroutine to prevent
@ -119,16 +120,12 @@ func (p *Pooler) UpdateServers(servers_type string) {
}(server.Server)
}
wait.Wait()
Eventer.LaunchEvent("flushServers")
p.PingServers(servers_type)
Eventer.LaunchEvent("flushServers")
if servers_type == "all" {
Eventer.LaunchEvent("loadAllServers")
Eventer.LaunchEvent("serversUpdateCompleted")
} else if servers_type == "favorites" {
Eventer.LaunchEvent("loadFavoriteServers")
Eventer.LaunchEvent("serversUpdateCompleted")
}
Eventer.LaunchEvent("loadAllServers")
Eventer.LaunchEvent("loadFavoriteServers")
Eventer.LaunchEvent("serversUpdateCompleted")
}
// Updates information about specific server.

View File

@ -293,6 +293,16 @@ func (m *MainWindow) editFavorite() {
}
}
func (m *MainWindow) getGameModeName(name string) string {
val, ok := m.gamemodes[name]
if !ok {
return "Unknown or custom"
}
return val
}
// Executes when "Hide offline servers" checkbox changed it's state on
// "Servers" tab.
func (m *MainWindow) hideOfflineAllServers() {
@ -423,8 +433,6 @@ func (m *MainWindow) Initialize() {
profile_and_launch_hbox.PackStart(profiles_label, false, true, 5)
profile_and_launch_hbox.PackStart(m.profiles, false, true, 5)
ctx.Eventer.AddEventHandler("loadProfiles", m.loadProfiles)
// One more separator.
sepp := gtk.NewVSeparator()
profile_and_launch_hbox.PackStart(sepp, false, true, 5)
@ -433,7 +441,7 @@ func (m *MainWindow) Initialize() {
m.launch_button = gtk.NewButtonWithLabel("Launch!")
m.launch_button.SetTooltipText("Launch Urban Terror")
m.launch_button.Clicked(m.launchGame)
launch_button_image := gtk.NewImageFromStock(gtk.STOCK_APPLY, 32)
launch_button_image := gtk.NewImageFromStock(gtk.STOCK_APPLY, 24)
m.launch_button.SetImage(launch_button_image)
profile_and_launch_hbox.PackStart(m.launch_button, false, true, 5)
@ -461,6 +469,7 @@ func (m *MainWindow) initializeEvents() {
fmt.Println("Initializing events...")
ctx.Eventer.AddEventHandler("loadAllServers", m.loadAllServers)
ctx.Eventer.AddEventHandler("loadFavoriteServers", m.loadFavoriteServers)
ctx.Eventer.AddEventHandler("loadProfiles", m.loadProfiles)
ctx.Eventer.AddEventHandler("serversUpdateCompleted", m.serversUpdateCompleted)
}
@ -596,11 +605,11 @@ func (m *MainWindow) initializeStorages() {
// Servers tab list view storage.
// Structure:
// Server status icon|Server name|Mode|Map|Players|Ping|Version
m.all_servers_store = gtk.NewListStore(gdkpixbuf.GetType(), glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING)
m.all_servers_store = gtk.NewListStore(gdkpixbuf.GetType(), glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING)
m.all_servers_store_sortable = gtk.NewTreeSortable(m.all_servers_store)
// Same as above, but for favorite servers.
m.fav_servers_store = gtk.NewListStore(gdkpixbuf.GetType(), glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING)
m.fav_servers_store = gtk.NewListStore(gdkpixbuf.GetType(), glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING)
// Server's information store. Used for quick preview in main window.
m.server_info_store = gtk.NewListStore(glib.G_TYPE_STRING, glib.G_TYPE_STRING)
@ -972,13 +981,13 @@ func (m *MainWindow) loadAllServers() {
}
if server.Server.Name == "" && server.Server.Players == "" && server.Server.Maxplayers == "" {
m.all_servers_store.Set(iter, 0, gtk.NewImage().RenderIcon(gtk.STOCK_NO, gtk.ICON_SIZE_SMALL_TOOLBAR, "").GPixbuf)
m.all_servers_store.SetValue(iter, 0, gtk.NewImage().RenderIcon(gtk.STOCK_NO, gtk.ICON_SIZE_SMALL_TOOLBAR, "").GPixbuf)
m.all_servers_store.SetValue(iter, 7, server.Server.Ip + ":" + server.Server.Port)
} else {
m.all_servers_store.Set(iter, 0, gtk.NewImage().RenderIcon(gtk.STOCK_OK, gtk.ICON_SIZE_SMALL_TOOLBAR, "").GPixbuf)
m.all_servers_store.SetValue(iter, 0, gtk.NewImage().RenderIcon(gtk.STOCK_OK, gtk.ICON_SIZE_SMALL_TOOLBAR, "").GPixbuf)
server_name := ctx.Colorizer.Fix(server.Server.Name)
m.all_servers_store.SetValue(iter, 1, server_name)
m.all_servers_store.SetValue(iter, 2, m.gamemodes[server.Server.Gamemode])
m.all_servers_store.SetValue(iter, 2, m.getGameModeName(server.Server.Gamemode))
m.all_servers_store.SetValue(iter, 3, server.Server.Map)
m.all_servers_store.SetValue(iter, 4, server.Server.Players + "/" + server.Server.Maxplayers)
m.all_servers_store.SetValue(iter, 5, server.Server.Ping)
@ -1016,13 +1025,13 @@ func (m *MainWindow) loadFavoriteServers() {
}
if server.Server.Name == "" && server.Server.Players == "" {
m.fav_servers_store.Set(iter, 0, gtk.NewImage().RenderIcon(gtk.STOCK_NO, gtk.ICON_SIZE_SMALL_TOOLBAR, "").GPixbuf)
m.fav_servers_store.SetValue(iter, 0, gtk.NewImage().RenderIcon(gtk.STOCK_NO, gtk.ICON_SIZE_SMALL_TOOLBAR, "").GPixbuf)
m.fav_servers_store.SetValue(iter, 7, server.Server.Ip + ":" + server.Server.Port)
} else {
m.fav_servers_store.Set(iter, 0, gtk.NewImage().RenderIcon(gtk.STOCK_OK, gtk.ICON_SIZE_SMALL_TOOLBAR, "").GPixbuf)
m.fav_servers_store.SetValue(iter, 0, gtk.NewImage().RenderIcon(gtk.STOCK_OK, gtk.ICON_SIZE_SMALL_TOOLBAR, "").GPixbuf)
server_name := ctx.Colorizer.Fix(server.Server.Name)
m.fav_servers_store.SetValue(iter, 1, server_name)
m.fav_servers_store.SetValue(iter, 2, m.gamemodes[server.Server.Gamemode])
m.fav_servers_store.SetValue(iter, 2, m.getGameModeName(server.Server.Gamemode))
m.fav_servers_store.SetValue(iter, 3, server.Server.Map)
m.fav_servers_store.SetValue(iter, 4, server.Server.Players + "/" + server.Server.Maxplayers)
m.fav_servers_store.SetValue(iter, 5, server.Server.Ping)
@ -1167,8 +1176,9 @@ func (m *MainWindow) showShortServerInformation() {
for _, value := range parsed_players_info {
iter = new(gtk.TreeIter)
nick := ctx.Colorizer.Fix(value["nick"])
m.server_info_store.Append(iter)
m.server_info_store.SetValue(iter, 0, value["nick"])
m.server_info_store.SetValue(iter, 0, nick)
m.server_info_store.SetValue(iter, 1, "(frags: " + value["frags"] + " | ping: " + value["ping"] + ")")
}