Skip to content

Commit 853268d

Browse files
committed
Add TransportGetter & HandlerGetter interface
1 parent 4af1636 commit 853268d

File tree

5 files changed

+45
-25
lines changed

5 files changed

+45
-25
lines changed

Diff for: rpc/client.go

+13-10
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
| |
77
| rpc/client.go |
88
| |
9-
| LastModified: May 12, 2021 |
9+
| LastModified: May 17, 2021 |
1010
| Author: Ma Bingyao <[email protected]> |
1111
| |
1212
\*________________________________________________________*/
@@ -31,22 +31,25 @@ func init() {
3131
}
3232

3333
// Client for RPC.
34-
type Client = core.Client
34+
type (
35+
Client = core.Client
36+
TransportGetter = core.TransportGetter
37+
)
3538

3639
var NewClient = core.NewClient
3740

38-
func HTTPTransport(c *Client) *http.Transport {
39-
return c.GetTransport("http").(*http.Transport)
41+
func HTTPTransport(t TransportGetter) *http.Transport {
42+
return t.GetTransport("http").(*http.Transport)
4043
}
4144

42-
func SocketTransport(c *Client) *socket.Transport {
43-
return c.GetTransport("socket").(*socket.Transport)
45+
func SocketTransport(t TransportGetter) *socket.Transport {
46+
return t.GetTransport("socket").(*socket.Transport)
4447
}
4548

46-
func UDPTransport(c *Client) *udp.Transport {
47-
return c.GetTransport("udp").(*udp.Transport)
49+
func UDPTransport(t TransportGetter) *udp.Transport {
50+
return t.GetTransport("udp").(*udp.Transport)
4851
}
4952

50-
func WebSocketTransport(c *Client) *websocket.Transport {
51-
return c.GetTransport("websocket").(*websocket.Transport)
53+
func WebSocketTransport(t TransportGetter) *websocket.Transport {
54+
return t.GetTransport("websocket").(*websocket.Transport)
5255
}

Diff for: rpc/core/client.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
| |
77
| rpc/core/client.go |
88
| |
9-
| LastModified: May 8, 2021 |
9+
| LastModified: May 17, 2021 |
1010
| Author: Ma Bingyao <[email protected]> |
1111
| |
1212
\*________________________________________________________*/
@@ -47,6 +47,10 @@ func RegisterTransport(name string, transportFactory TransportFactory) {
4747
}
4848
}
4949

50+
type TransportGetter interface {
51+
GetTransport(name string) Transport
52+
}
53+
5054
// Client for RPC.
5155
type Client struct {
5256
Codec ClientCodec

Diff for: rpc/core/service.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
| |
77
| rpc/core/service.go |
88
| |
9-
| LastModified: May 4, 2021 |
9+
| LastModified: May 17, 2021 |
1010
| Author: Ma Bingyao <[email protected]> |
1111
| |
1212
\*________________________________________________________*/
@@ -48,6 +48,10 @@ func RegisterHandler(name string, handlerFactory HandlerFactory) {
4848
}
4949
}
5050

51+
type HandlerGetter interface {
52+
GetHandler(name string) Handler
53+
}
54+
5155
// Service for RPC.
5256
type Service struct {
5357
Codec ServiceCodec

Diff for: rpc/rpc_test.go

+9-3
Original file line numberDiff line numberDiff line change
@@ -481,8 +481,8 @@ func TestHTTP(t *testing.T) {
481481
httpHandler.SetClientAccessPolicyXMLContent([]byte(clientAccessPolicyXMLContent))
482482
service.AddFunction(func(ctx context.Context, name string) string {
483483
serviceContext := rpc.GetServiceContext(ctx)
484-
header, _ := serviceContext.Items().Get("httpRequestHeaders")
485-
return header.(http.Header).Get("test") + ":hello " + name
484+
header := serviceContext.Items().GetInterface("httpRequestHeaders").(http.Header)
485+
return header.Get("test") + ":hello " + name
486486
}, "hello")
487487
assert.True(t, service.Get("hello").PassContext())
488488
serverMux := http.NewServeMux()
@@ -770,7 +770,12 @@ func TestPush(t *testing.T) {
770770
assert.NoError(t, err)
771771
err = service.Bind(server)
772772
assert.NoError(t, err)
773-
773+
service.AddFunction(func(ctx context.Context, name string) string {
774+
serviceContext := rpc.GetServiceContext(ctx)
775+
producer := serviceContext.Items().GetInterface("producer").(push.Producer)
776+
producer.Push("ooxx", "test")
777+
return "hello " + name
778+
}, "hello")
774779
time.Sleep(time.Millisecond * 5)
775780

776781
client1 := rpc.NewClient("tcp://127.0.0.1/")
@@ -792,6 +797,7 @@ func TestPush(t *testing.T) {
792797
fmt.Println(message)
793798
})
794799
time.Sleep(time.Millisecond * 100)
800+
client1.Invoke("hello", []interface{}{"world"})
795801
var wg sync.WaitGroup
796802
n := 1000
797803
wg.Add(n)

Diff for: rpc/service.go

+13-10
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
| |
77
| rpc/service.go |
88
| |
9-
| LastModified: May 12, 2021 |
9+
| LastModified: May 17, 2021 |
1010
| Author: Ma Bingyao <[email protected]> |
1111
| |
1212
\*________________________________________________________*/
@@ -30,22 +30,25 @@ func init() {
3030
}
3131

3232
// Service for RPC.
33-
type Service = core.Service
33+
type (
34+
Service = core.Service
35+
HandlerGetter = core.HandlerGetter
36+
)
3437

3538
var NewService = core.NewService
3639

37-
func HTTPHandler(s *Service) *http.Handler {
38-
return &s.GetHandler("websocket").(*websocket.Handler).Handler
40+
func HTTPHandler(h HandlerGetter) *http.Handler {
41+
return &h.GetHandler("websocket").(*websocket.Handler).Handler
3942
}
4043

41-
func SocketHandler(s *Service) *socket.Handler {
42-
return s.GetHandler("socket").(*socket.Handler)
44+
func SocketHandler(h HandlerGetter) *socket.Handler {
45+
return h.GetHandler("socket").(*socket.Handler)
4346
}
4447

45-
func UDPHandler(s *Service) *udp.Handler {
46-
return s.GetHandler("udp").(*udp.Handler)
48+
func UDPHandler(h HandlerGetter) *udp.Handler {
49+
return h.GetHandler("udp").(*udp.Handler)
4750
}
4851

49-
func WebSocketHandler(s *Service) *websocket.Handler {
50-
return s.GetHandler("websocket").(*websocket.Handler)
52+
func WebSocketHandler(h HandlerGetter) *websocket.Handler {
53+
return h.GetHandler("websocket").(*websocket.Handler)
5154
}

0 commit comments

Comments
 (0)