mirror of
https://bitbucket.org/s_l_teichmann/mtsatellite
synced 2025-01-11 09:20:17 +01:00
Read players from fifo.
This commit is contained in:
parent
ff08f2af94
commit
5d7b910a4d
@ -1,14 +1,19 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"html/template"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
const sleepInterval = time.Second * 5
|
||||
|
||||
var geoJSONTmpl = template.Must(template.New("geojson").Parse(
|
||||
`{ "type": "Feature",
|
||||
"geometry": {
|
||||
@ -21,10 +26,10 @@ var geoJSONTmpl = template.Must(template.New("geojson").Parse(
|
||||
}`))
|
||||
|
||||
type player struct {
|
||||
X float64
|
||||
Y float64
|
||||
Z float64
|
||||
Name string
|
||||
X float64 `json:"x"`
|
||||
Y float64 `json:"y"`
|
||||
Z float64 `json:"z"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
type players struct {
|
||||
@ -46,9 +51,33 @@ func (p *player) MarshalJSON() ([]byte, error) {
|
||||
return buf.Bytes(), nil
|
||||
}
|
||||
|
||||
func (ps *players) readFromFIFO() ([]*player, error) {
|
||||
file, err := os.Open(ps.fifo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer file.Close()
|
||||
reader := bufio.NewReader(file)
|
||||
decoder := json.NewDecoder(reader)
|
||||
var pls []*player
|
||||
|
||||
if err = decoder.Decode(&pls); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return pls, nil
|
||||
}
|
||||
|
||||
func (ps *players) run() {
|
||||
for {
|
||||
// TODO: Implement me!
|
||||
pls, err := ps.readFromFIFO()
|
||||
if err != nil {
|
||||
time.Sleep(sleepInterval)
|
||||
continue
|
||||
}
|
||||
ps.mu.Lock()
|
||||
ps.pls = pls
|
||||
ps.mu.Unlock()
|
||||
// TODO: Implement websocket broadcast.
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user