aboutsummaryrefslogtreecommitdiff
path: root/rpc.go
diff options
context:
space:
mode:
Diffstat (limited to 'rpc.go')
-rw-r--r--rpc.go33
1 files changed, 16 insertions, 17 deletions
diff --git a/rpc.go b/rpc.go
index 62a6a3f..bf7b36d 100644
--- a/rpc.go
+++ b/rpc.go
@@ -1,38 +1,37 @@
-package main
+package goxy
import (
"log"
"net/rpc"
)
-// GoXY defines RPC interface
-type GoXY struct{}
+type GoXY struct {
+ Server *Server
+}
-func init() {
- rpc.Register(GoXY{})
+func Register(s *Server) {
+ rpc.Register(&GoXY{s})
rpc.HandleHTTP()
}
// Add adds a new route
-func (GoXY) Add(e Entry, _ *struct{}) error {
+func (s *GoXY) Add(e Entry, _ *struct{}) error {
log.Println("Add route", e)
- defer route.Save(*data)
- route[e.ServerName] = e
- return route.Restore()
+ defer s.Server.Save()
+ s.Server.Route[e.ServerName] = e
+ return s.Server.Restore()
}
// Del removes a route
-func (GoXY) Del(e Entry, _ *struct{}) error {
+func (s *GoXY) Del(e Entry, _ *struct{}) error {
log.Println("Del route", e)
- defer route.Save(*data)
- delete(route, e.ServerName)
- return route.Restore()
+ defer s.Server.Save()
+ delete(s.Server.Route, e.ServerName)
+ return s.Server.Restore()
}
// List routes
-func (GoXY) List(_ struct{}, r *[]Entry) error {
- for _, v := range route {
- *r = append(*r, v)
- }
+func (s GoXY) List(_ struct{}, r *Route) error {
+ *r = s.Server.Route
return nil
}