aboutsummaryrefslogtreecommitdiff
path: root/rpc.go
blob: bf7b36db1665e08b06a0340f68c0ecc923991995 (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
package goxy

import (
	"log"
	"net/rpc"
)

type GoXY struct {
	Server *Server
}

func Register(s *Server) {
	rpc.Register(&GoXY{s})
	rpc.HandleHTTP()
}

// Add adds a new route
func (s *GoXY) Add(e Entry, _ *struct{}) error {
	log.Println("Add route", e)
	defer s.Server.Save()
	s.Server.Route[e.ServerName] = e
	return s.Server.Restore()
}

// Del removes a route
func (s *GoXY) Del(e Entry, _ *struct{}) error {
	log.Println("Del route", e)
	defer s.Server.Save()
	delete(s.Server.Route, e.ServerName)
	return s.Server.Restore()
}

// List routes
func (s GoXY) List(_ struct{}, r *Route) error {
	*r = s.Server.Route
	return nil
}