From 51b23fa68f130b77dfd42331d429863dc705f88e Mon Sep 17 00:00:00 2001 From: pztrn Date: Fri, 7 Oct 2016 02:50:52 +0500 Subject: [PATCH] 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. --- cache/cache_object.go | 2 ++ colorizer/colorizer_object.go | 5 ++++- requester/pooler.go | 17 +++++++---------- ui/mainwindow.go | 34 ++++++++++++++++++++++------------ 4 files changed, 35 insertions(+), 23 deletions(-) diff --git a/cache/cache_object.go b/cache/cache_object.go index 01a5508..555f600 100644 --- a/cache/cache_object.go +++ b/cache/cache_object.go @@ -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.") } diff --git a/colorizer/colorizer_object.go b/colorizer/colorizer_object.go index b144e8e..27225ef 100644 --- a/colorizer/colorizer_object.go +++ b/colorizer/colorizer_object.go @@ -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 += "" + html.EscapeString(string([]rune(data_splitted[item])[1:])) + "" + result += "" + string([]rune(data_splitted[item])[1:]) + "" } else { result += data_splitted[item] } diff --git a/requester/pooler.go b/requester/pooler.go index 7ec2707..a9bf1c5 100644 --- a/requester/pooler.go +++ b/requester/pooler.go @@ -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. diff --git a/ui/mainwindow.go b/ui/mainwindow.go index 8ab1014..91fc4a6 100644 --- a/ui/mainwindow.go +++ b/ui/mainwindow.go @@ -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"] + ")") }