34 lines
742 B
Go
34 lines
742 B
Go
|
package service
|
||
|
|
||
|
import (
|
||
|
"net/rpc"
|
||
|
)
|
||
|
|
||
|
func NewClient(address string) (HelloService, error) {
|
||
|
conn, err := rpc.Dial("tcp", address)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
// buf := bytes.NewBuffer([]byte{})
|
||
|
// gob.NewEncoder(buf).Encode(HelloRequest{Name: "test"})
|
||
|
|
||
|
//
|
||
|
// reader := bytes.NewReader([]byte("{}"))
|
||
|
// resp := HelloRequest{Name: "test"}
|
||
|
// gob.NewDecoder(reader).Decode(&resp)
|
||
|
return &HelloServiceClient{conn: conn}, nil
|
||
|
}
|
||
|
|
||
|
// 要封装原始的 不友好的rpc call
|
||
|
type HelloServiceClient struct {
|
||
|
conn *rpc.Client
|
||
|
}
|
||
|
|
||
|
func (c *HelloServiceClient) Hello(request *HelloRequest, response *HelloResponse) error {
|
||
|
if err := c.conn.Call("HelloService.Hello", request, response); err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
return nil
|
||
|
}
|