summaryrefslogtreecommitdiff
path: root/deprecated-webircgateway/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'deprecated-webircgateway/plugins')
-rw-r--r--deprecated-webircgateway/plugins/example/plugin.go11
-rw-r--r--deprecated-webircgateway/plugins/stats/plugin.go52
2 files changed, 63 insertions, 0 deletions
diff --git a/deprecated-webircgateway/plugins/example/plugin.go b/deprecated-webircgateway/plugins/example/plugin.go
new file mode 100644
index 0000000..085d9e3
--- /dev/null
+++ b/deprecated-webircgateway/plugins/example/plugin.go
@@ -0,0 +1,11 @@
+package main
+
+import (
+ "sync"
+
+ "github.com/kiwiirc/webircgateway/pkg/webircgateway"
+)
+
+func Start(gateway *webircgateway.Gateway, pluginsQuit *sync.WaitGroup) {
+ gateway.Log(1, "Example gateway plugin %s", webircgateway.Version)
+} \ No newline at end of file
diff --git a/deprecated-webircgateway/plugins/stats/plugin.go b/deprecated-webircgateway/plugins/stats/plugin.go
new file mode 100644
index 0000000..bdafc41
--- /dev/null
+++ b/deprecated-webircgateway/plugins/stats/plugin.go
@@ -0,0 +1,52 @@
+package main
+
+import (
+ "fmt"
+ "math"
+ "os"
+ "runtime"
+ "sync"
+ "time"
+
+ "github.com/kiwiirc/webircgateway/pkg/webircgateway"
+)
+
+func Start(gateway *webircgateway.Gateway, pluginsQuit *sync.WaitGroup) {
+ gateway.Log(2, "Stats reporting plugin loading")
+ go reportUsage(gateway)
+
+ pluginsQuit.Done()
+}
+
+func reportUsage(gateway *webircgateway.Gateway) {
+ started := time.Now()
+
+ out := func(line string) {
+ file, _ := os.OpenFile("stats_"+fmt.Sprintf("%v", started.Unix())+".csv",
+ os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
+ file.WriteString(line)
+ file.Close()
+ }
+
+ out("time,rss,heapinuse,heapalloc,numroutines,numclients\n")
+
+ for {
+ time.Sleep(time.Second * 5)
+
+ numClients := gateway.Clients.Count()
+ mem := &runtime.MemStats{}
+ runtime.ReadMemStats(mem)
+
+ line := fmt.Sprintf(
+ "%v,%v,%v,%v,%v,%v\n",
+ math.Round(time.Now().Sub(started).Seconds()),
+ mem.Sys/1024,
+ mem.HeapInuse/1024,
+ mem.HeapAlloc/1024,
+ runtime.NumGoroutine(),
+ numClients,
+ )
+
+ out(line)
+ }
+}