blob: 7eba79e12771a13fd4f16a45cb0233d55f9b5e35 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
package main
import (
"html/template"
"log"
"net/http"
"os"
"sync/atomic"
"embed"
)
/*
#include <stdint.h>
extern unsigned long int log2lzcnt(unsigned long int);
*/
import "C"
//go:embed templates
var templates embed.FS
func main() {
counter := atomic.Uint64{}
host := ":8080"
if len(os.Args) == 2 {
host = os.Args[1]
}
tmpl, err := template.ParseFS(templates, "templates/*.html")
if err != nil {
log.Fatal(err)
}
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
n := counter.Add(1)
payload := struct {
Requests uint64
Log2lzcnt uint64
}{
Requests: n,
Log2lzcnt: uint64(C.log2lzcnt(C.uint64_t(n))),
}
tmpl.Execute(w, payload)
})
http.ListenAndServe(host, nil)
}
|