-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.go
56 lines (48 loc) · 935 Bytes
/
server.go
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
49
50
51
52
53
54
55
56
package lib
import (
"log"
)
type Server struct {
Name string
Desc string
Link *Link
Route *Server
Hub *Server
Links map[string]*Server
}
func NewRemoteServer(name, desc string, hub *Server) *Server {
s := &Server{
Name: name,
Desc: desc,
Hub: hub,
Route: hub.Route,
Links: make(map[string]*Server),
}
hub.Links[name] = s
return s
}
func NewLocalServer(name, desc string, link *Link, hub *Server) *Server {
s := &Server{
Name: name,
Desc: desc,
Link: link,
Links: make(map[string]*Server),
Hub: hub,
}
s.Route = s
return s
}
func (s *Server) Send(msg SSMessage) {
log.Printf("[%s -> %s]: %s", s.Route.Hub.Name, s.Route.Name, msg.String())
err := s.Route.Link.WriteMessage(msg)
if err != nil {
log.Fatalf("[%s -> %s] error: %v", s.Route.Hub.Name, s.Route.Name, err)
}
}
func (s *Server) Serialize() SSMessage {
return &SSServer {
Name: s.Name,
Desc: s.Desc,
Via: s.Hub.Name,
}
}