aboutsummaryrefslogtreecommitdiff
path: root/rpc.go
diff options
context:
space:
mode:
Diffstat (limited to 'rpc.go')
-rw-r--r--rpc.go51
1 files changed, 29 insertions, 22 deletions
diff --git a/rpc.go b/rpc.go
index 62a6a3f..e6a674d 100644
--- a/rpc.go
+++ b/rpc.go
@@ -1,38 +1,45 @@
-package main
+package goxy
-import (
- "log"
- "net/rpc"
-)
+import "net/rpc"
-// GoXY defines RPC interface
-type GoXY struct{}
+type GoXY struct {
+ server *Server
+}
func init() {
- rpc.Register(GoXY{})
rpc.HandleHTTP()
}
+func RegisterRPC(s *Server) error {
+ return rpc.Register(&GoXY{s})
+}
+
+func DialRPC(server string) (*rpc.Client, error) {
+ return rpc.DialHTTP("tcp", server)
+}
+
// Add adds a new route
-func (GoXY) Add(e Entry, _ *struct{}) error {
- log.Println("Add route", e)
- defer route.Save(*data)
- route[e.ServerName] = e
- return route.Restore()
+func (s *GoXY) Add(e Entry, _ *struct{}) error {
+ defer s.server.Save(s.server.DataFile)
+ s.server.Route[e.Host] = e
+ return s.server.Update()
}
// Del removes a route
-func (GoXY) Del(e Entry, _ *struct{}) error {
- log.Println("Del route", e)
- defer route.Save(*data)
- delete(route, e.ServerName)
- return route.Restore()
+func (s *GoXY) Del(host string, _ *struct{}) error {
+ defer s.server.Save(s.server.DataFile)
+ delete(s.server.Route, host)
+ return s.server.Update()
+}
+
+// Get returns Entry
+func (s *GoXY) Get(host string, e *Entry) error {
+ *e = s.server.Route[host]
+ return nil
}
// 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
}