Jelajahi Sumber

Remove goroutine legend. Add memory.

Heap is fun to watch, you can see when GC runs.
Bugz 1 tahun lalu
induk
melakukan
1e7c854ac7
2 mengubah file dengan 70 tambahan dan 25 penghapusan
  1. 1 1
      testdoor/runtime-info.go
  2. 69 24
      testdoor/testdoor.go

+ 1 - 1
testdoor/runtime-info.go

@@ -28,7 +28,7 @@ func GoRoutinesStatus() string {
 		"sleep":        "S",
 		"select":       "s", // missing
 		"chan receive": "<", // missing
-		"chan send":    ">",
+		"chan send":    ">", // missing
 	}
 	// 2K works, we don't have to grow any more.
 	if buffer == nil {

+ 69 - 24
testdoor/testdoor.go

@@ -115,6 +115,7 @@ func about_test_door(d *door.Door) {
 	door.NoMoreSecrets(about.Output(), d, &better)
 }
 
+// Build door.Menu (Main menu)
 func MainMenu() door.Menu {
 	// Make the main menu
 	// Width was 45
@@ -138,7 +139,7 @@ func MainMenu() door.Menu {
 	// m.AddSelection("C", "Crash")
 	menu.AddSelection("D", "Display Information")
 	menu.AddSelection("F", "Font Demo")
-	menu.AddSelection("I", "Input Prompt Demo")
+	menu.AddSelection("I", "Input Demo")
 	menu.AddSelection("M", "Menu Demo")
 	menu.AddSelection("P", "Progress Bars Demo")
 	menu.AddSelection("S", "Show Panel")
@@ -630,6 +631,7 @@ type TrackPanels struct {
 	BColor string
 }
 
+// Find the Panel that was mouse clicked.
 func FindPanel(m door.Mouse, panels []TrackPanels) int {
 	for idx, p := range panels {
 		hit, _, _ := p.Panel.Within(int(m.X), int(m.Y))
@@ -837,17 +839,18 @@ func main() {
 		door.ColorText("RED ON GREEN"),
 		[]string{"RED", "GREEN", "SOFTWARE"})
 
-	var spin2 door.SpinRite = door.SpinRiteInit(13, 5,
-		door.ColorText("BRI CYA ON BLUE"))
-
+	/*
+		var spin2 door.SpinRite = door.SpinRiteInit(13, 5,
+			door.ColorText("BRI CYA ON BLUE"))
+	*/
 	// Add in the GoRoutine Status panel
 
-	var goPanel door.Panel = door.Panel{X: 0,
-		Y:           1,
-		Width:       18,
+	var goPanel door.Panel = door.Panel{X: door.Width - 19,
+		Y:           3,
+		Width:       16,
 		Style:       door.DOUBLE,
-		Title:       "] GoRoutines [",
-		BorderColor: door.ColorText("BOLD YEL ON BLU"),
+		Title:       "] GoRuntime [",
+		BorderColor: door.ColorText("BOLD YELL"),
 	}
 	goLineUpdater := func() string {
 		status := GoRoutinesStatus()
@@ -856,12 +859,47 @@ func main() {
 	}
 
 	var goLine door.Line = door.Line{
-		UpdateF: goLineUpdater,
-		Width:   goPanel.Width,
+		UpdateF:      goLineUpdater,
+		Width:        goPanel.Width,
+		DefaultColor: door.ColorText("CYAN"),
 	}
 	// goLine.Update() // Force Update
 	goPanel.Lines = append(goPanel.Lines, goLine)
-	goPanel.Lines = append(goPanel.Lines, door.Line{Width: goPanel.Width})
+
+	// Display Legend on GoRuntime panel
+	const DisplayGoRoutineLegend bool = false
+	// Display Memory
+	const DisplayMemory bool = true
+	var MemoryStats map[string]string
+
+	if DisplayGoRoutineLegend {
+		// Line for legend.
+		goPanel.Lines = append(goPanel.Lines, door.Line{Width: goPanel.Width})
+	}
+
+	if DisplayMemory {
+		memoryUpdater := func() string {
+			MemoryStats = Memory()
+			return fmt.Sprintf("%-8s%8s", "Sys", MemoryStats["Sys"])
+		}
+		goPanel.Lines = append(goPanel.Lines, door.Line{UpdateF: memoryUpdater,
+			Width:        goPanel.Width,
+			DefaultColor: door.ColorText("BLU")})
+		heapUpdater := func() string {
+			return fmt.Sprintf("%-8s%8s", "HeapSys", MemoryStats["Heap"])
+		}
+		goPanel.Lines = append(goPanel.Lines, door.Line{UpdateF: heapUpdater,
+			Width:        goPanel.Width,
+			DefaultColor: door.ColorText("BLU")})
+
+		stackUpdater := func() string {
+			return fmt.Sprintf("%-8s%8s", "StackSys", MemoryStats["StackSys"])
+		}
+		goPanel.Lines = append(goPanel.Lines, door.Line{UpdateF: stackUpdater,
+			Width:        goPanel.Width,
+			DefaultColor: door.ColorText("BLU")})
+	}
+
 	var lIndex int = 0
 	var legendCount int = 0
 	const legendUpdate = 20
@@ -876,20 +914,23 @@ func main() {
 			"I=Idle D=Dead",
 			"W=Wait C=Copystk",
 		}
-		goPanel.Lines[1].Text = legend[0]
-
+		if DisplayGoRoutineLegend {
+			goPanel.Lines[1].Text = legend[0]
+		}
 		for range ticker.C {
 			// output = door.SavePos + door.Goto(door.Width-16, 1) + spin.Output() +
 			//	door.Goto(door.Width-15, 3) + spin2.Output() + door.RestorePos
 
-			legendCount++
-			if legendCount >= legendUpdate {
-				legendCount = 0
-				lIndex++
-				if lIndex == len(legend) {
-					lIndex = 0
+			if DisplayGoRoutineLegend {
+				legendCount++
+				if legendCount >= legendUpdate {
+					legendCount = 0
+					lIndex++
+					if lIndex == len(legend) {
+						lIndex = 0
+					}
+					goPanel.Lines[1].Text = legend[lIndex]
 				}
-				goPanel.Lines[1].Text = legend[lIndex]
 			}
 
 			if goPanel.X == 0 {
@@ -897,8 +938,12 @@ func main() {
 			}
 
 			goPanel.Update()
-			output = door.Goto(door.Width-16, 1) + spin.Output() +
-				door.Goto(door.Width-15, 3) + spin2.Output() + goPanel.Output()
+			output = door.Goto(door.Width-16, 1) + spin.Output() + goPanel.Output()
+			/*
+				    +
+					door.Goto(door.Width-15, 3) + spin2.Output()
+			*/
+
 			if !d.Disconnect() {
 				d.Update(output)
 			} else {
@@ -909,7 +954,7 @@ func main() {
 	}()
 
 	var wopr door.WOPR
-	wopr.Init(d.StartTime, d.TimeOut, "") // TimeUsed(), d.TimeLeft(), "")
+	wopr.Init(d.StartTime, d.TimeOut, "")
 	wopr.ElapsedPanel.X = door.Width - 19
 	wopr.ElapsedPanel.Y = door.Height - 15
 	wopr.RemainingPanel.X = door.Width - 19