aboutsummaryrefslogtreecommitdiff
path: root/rpc.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-03-27 22:15:22 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-03-27 22:15:22 +0200
commit13ce0d0853fc888cf465742ed2e134e9bc5be77a (patch)
tree2a1e48e4820c14b62478e7bb1eb336f90ddbc43f /rpc.go
parentd21557ca8920525494670ab59474dd0c3a3517ad (diff)
Clenup RPC
Diffstat (limited to 'rpc.go')
-rw-r--r--rpc.go43
1 files changed, 38 insertions, 5 deletions
diff --git a/rpc.go b/rpc.go
index bf7b36d..e7a6a20 100644
--- a/rpc.go
+++ b/rpc.go
@@ -14,7 +14,7 @@ func Register(s *Server) {
rpc.HandleHTTP()
}
-// Add adds a new route
+// Add adds a new route (server)
func (s *GoXY) Add(e Entry, _ *struct{}) error {
log.Println("Add route", e)
defer s.Server.Save()
@@ -22,16 +22,49 @@ func (s *GoXY) Add(e Entry, _ *struct{}) error {
return s.Server.Restore()
}
-// Del removes a route
-func (s *GoXY) Del(e Entry, _ *struct{}) error {
- log.Println("Del route", e)
+// Add new entry (client)
+func Add(e Entry, server string) error {
+ client, err := rpc.DialHTTP("tcp", server)
+ if err != nil {
+ return err
+ }
+ defer client.Close()
+ return client.Call("GoXY.Add", e, nil)
+}
+
+// Del removes a route (server)
+func (s *GoXY) Del(serverName string, _ *struct{}) error {
+ log.Println("Del route", serverName)
defer s.Server.Save()
- delete(s.Server.Route, e.ServerName)
+ delete(s.Server.Route, serverName)
return s.Server.Restore()
}
+// Del removes a route (client)
+func Del(serverName string, server string) error {
+ client, err := rpc.DialHTTP("tcp", server)
+ if err != nil {
+ return err
+ }
+ defer client.Close()
+ return client.Call("GoXY.Del", serverName, nil)
+}
+
// List routes
func (s GoXY) List(_ struct{}, r *Route) error {
*r = s.Server.Route
return nil
}
+
+func List(server string) (Route, error) {
+ client, err := rpc.DialHTTP("tcp", server)
+ if err != nil {
+ return nil, err
+ }
+ defer client.Close()
+ var r Route
+ if err := client.Call("GoXY.List", struct{}{}, &r); err != nil {
+ return nil, err
+ }
+ return r, nil
+}