starpc 0.10.6 → 0.10.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -8
- package/dist/echo/echo.pb.d.ts +5 -5
- package/dist/echo/echo.pb.js +20 -20
- package/dist/rpcstream/rpcstream.pb.d.ts +7 -7
- package/dist/rpcstream/rpcstream.pb.js +39 -64
- package/dist/srpc/rpcproto.pb.d.ts +6 -6
- package/dist/srpc/rpcproto.pb.js +38 -75
- package/e2e/e2e_test.go +0 -7
- package/echo/echo.pb.ts +88 -144
- package/go.mod +9 -10
- package/go.sum +19 -21
- package/package.json +1 -1
- package/srpc/handler.go +11 -4
- package/srpc/mux.go +40 -4
- package/srpc/muxed-conn.go +7 -2
- package/srpc/rpcproto.pb.ts +183 -273
- package/srpc/rwc-conn.go +229 -0
- package/srpc/server-rpc.go +6 -6
- package/srpc/server.go +8 -8
package/go.sum
CHANGED
|
@@ -35,8 +35,8 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
|
|
35
35
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
|
36
36
|
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
|
37
37
|
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
|
|
38
|
-
github.com/ipfs/go-cid v0.2
|
|
39
|
-
github.com/ipfs/go-cid v0.2
|
|
38
|
+
github.com/ipfs/go-cid v0.3.2 h1:OGgOd+JCFM+y1DjWPmVH+2/4POtpDzwcr7VgnB7mZXc=
|
|
39
|
+
github.com/ipfs/go-cid v0.3.2/go.mod h1:gQ8pKqT/sUxGY+tIwy1RPpAojYu7jAyCp5Tz1svoupw=
|
|
40
40
|
github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY=
|
|
41
41
|
github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI=
|
|
42
42
|
github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns=
|
|
@@ -44,12 +44,12 @@ github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u
|
|
|
44
44
|
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
|
45
45
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
|
46
46
|
github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
|
47
|
-
github.com/klauspost/compress v1.15.
|
|
48
|
-
github.com/klauspost/compress v1.15.
|
|
47
|
+
github.com/klauspost/compress v1.15.10 h1:Ai8UzuomSCDw90e1qNMtb15msBXsNpH6gzkkENQNcJo=
|
|
48
|
+
github.com/klauspost/compress v1.15.10/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
|
|
49
49
|
github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
|
50
50
|
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
|
51
|
-
github.com/klauspost/cpuid/v2 v2.1.
|
|
52
|
-
github.com/klauspost/cpuid/v2 v2.1.
|
|
51
|
+
github.com/klauspost/cpuid/v2 v2.1.1 h1:t0wUqjowdm8ezddV5k0tLWVklVuvLJpoHeb4WBdydm0=
|
|
52
|
+
github.com/klauspost/cpuid/v2 v2.1.1/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
|
|
53
53
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
|
54
54
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
|
55
55
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
|
@@ -57,13 +57,11 @@ github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
|
|
|
57
57
|
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
|
|
58
58
|
github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8=
|
|
59
59
|
github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg=
|
|
60
|
-
github.com/libp2p/go-libp2p v0.
|
|
61
|
-
github.com/libp2p/go-libp2p v0.
|
|
62
|
-
github.com/libp2p/go-libp2p-
|
|
63
|
-
github.com/libp2p/go-
|
|
64
|
-
github.com/libp2p/go-
|
|
65
|
-
github.com/libp2p/go-mplex v0.7.1-0.20220825125536-a00a1352b54f h1:EV1RlDc4U/gb50y2xqd2LdONQ/EcmihS4bbvajKER3s=
|
|
66
|
-
github.com/libp2p/go-mplex v0.7.1-0.20220825125536-a00a1352b54f/go.mod h1:bUU7Bl6gVaLs+DK8DyT4VKY2XhsgxLmafxHCesUq+j0=
|
|
60
|
+
github.com/libp2p/go-libp2p v0.23.2 h1:yqyTeKQJyofWXxEv/eEVUvOrGdt/9x+0PIQ4N1kaxmE=
|
|
61
|
+
github.com/libp2p/go-libp2p v0.23.2/go.mod h1:s9DEa5NLR4g+LZS+md5uGU4emjMWFiqkZr6hBTY8UxI=
|
|
62
|
+
github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA=
|
|
63
|
+
github.com/libp2p/go-mplex v0.7.1-0.20220919134208-b0cc3e9c41a9 h1:PolwtQpl5xZ7j59zsvFEF3oEDxXDcLH6cVYK3qAFiMc=
|
|
64
|
+
github.com/libp2p/go-mplex v0.7.1-0.20220919134208-b0cc3e9c41a9/go.mod h1:bUU7Bl6gVaLs+DK8DyT4VKY2XhsgxLmafxHCesUq+j0=
|
|
67
65
|
github.com/libp2p/go-openssl v0.1.0 h1:LBkKEcUv6vtZIQLVTegAil8jbNpJErQ9AnT+bWV+Ooo=
|
|
68
66
|
github.com/libp2p/go-openssl v0.1.0/go.mod h1:OiOxwPpL3n4xlenjx2h7AwSGaFSC/KZvf6gNdOBQMtc=
|
|
69
67
|
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
|
@@ -80,16 +78,16 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLD
|
|
|
80
78
|
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
|
81
79
|
github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
|
|
82
80
|
github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
|
83
|
-
github.com/multiformats/go-base32 v0.0
|
|
84
|
-
github.com/multiformats/go-base32 v0.0
|
|
81
|
+
github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE=
|
|
82
|
+
github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI=
|
|
85
83
|
github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4=
|
|
86
84
|
github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM=
|
|
87
|
-
github.com/multiformats/go-multiaddr v0.
|
|
88
|
-
github.com/multiformats/go-multiaddr v0.
|
|
85
|
+
github.com/multiformats/go-multiaddr v0.7.0 h1:gskHcdaCyPtp9XskVwtvEeQOG465sCohbQIirSyqxrc=
|
|
86
|
+
github.com/multiformats/go-multiaddr v0.7.0/go.mod h1:Fs50eBDWvZu+l3/9S6xAE7ZYj6yhxlvaVZjakWN7xRs=
|
|
89
87
|
github.com/multiformats/go-multibase v0.1.1 h1:3ASCDsuLX8+j4kx58qnJ4YFq/JWTJpCyDW27ztsVTOI=
|
|
90
88
|
github.com/multiformats/go-multibase v0.1.1/go.mod h1:ZEjHE+IsUrgp5mhlEAYjMtZwK1k4haNkcaPg9aoe1a8=
|
|
91
|
-
github.com/multiformats/go-multicodec v0.
|
|
92
|
-
github.com/multiformats/go-multicodec v0.
|
|
89
|
+
github.com/multiformats/go-multicodec v0.6.0 h1:KhH2kSuCARyuJraYMFxrNO3DqIaYhOdS039kbhgVwpE=
|
|
90
|
+
github.com/multiformats/go-multicodec v0.6.0/go.mod h1:GUC8upxSBE4oG+q3kWZRw/+6yC1BqO550bjhWsJbZlw=
|
|
93
91
|
github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108=
|
|
94
92
|
github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc=
|
|
95
93
|
github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY=
|
|
@@ -126,8 +124,8 @@ go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9i
|
|
|
126
124
|
go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8=
|
|
127
125
|
go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=
|
|
128
126
|
go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=
|
|
129
|
-
go.uber.org/zap v1.
|
|
130
|
-
go.uber.org/zap v1.
|
|
127
|
+
go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY=
|
|
128
|
+
go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY=
|
|
131
129
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
|
132
130
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
|
133
131
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
package/package.json
CHANGED
package/srpc/handler.go
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
package srpc
|
|
2
2
|
|
|
3
|
+
// Invoker describes a SRPC service invoker.
|
|
4
|
+
type Invoker interface {
|
|
5
|
+
// InvokeMethod invokes the method matching the service & method ID.
|
|
6
|
+
// Returns false, nil if not found.
|
|
7
|
+
// If service string is empty, ignore it.
|
|
8
|
+
InvokeMethod(serviceID, methodID string, strm Stream) (bool, error)
|
|
9
|
+
}
|
|
10
|
+
|
|
3
11
|
// Handler describes a SRPC call handler implementation.
|
|
4
12
|
type Handler interface {
|
|
13
|
+
// Invoker invokes the methods.
|
|
14
|
+
Invoker
|
|
15
|
+
|
|
5
16
|
// GetServiceID returns the ID of the service.
|
|
6
17
|
GetServiceID() string
|
|
7
18
|
// GetMethodIDs returns the list of methods for the service.
|
|
8
19
|
GetMethodIDs() []string
|
|
9
|
-
// InvokeMethod invokes the method matching the service & method ID.
|
|
10
|
-
// Returns false, nil if not found.
|
|
11
|
-
// If service string is empty, ignore it.
|
|
12
|
-
InvokeMethod(serviceID, methodID string, strm Stream) (bool, error)
|
|
13
20
|
}
|
package/srpc/mux.go
CHANGED
|
@@ -4,12 +4,15 @@ import "sync"
|
|
|
4
4
|
|
|
5
5
|
// Mux contains a set of <service, method> handlers.
|
|
6
6
|
type Mux interface {
|
|
7
|
+
// Invoker invokes the methods.
|
|
8
|
+
Invoker
|
|
9
|
+
|
|
7
10
|
// Register registers a new RPC method handler (service).
|
|
8
11
|
Register(handler Handler) error
|
|
9
|
-
//
|
|
10
|
-
|
|
11
|
-
//
|
|
12
|
-
|
|
12
|
+
// HasService checks if the service ID exists in the handlers.
|
|
13
|
+
HasService(serviceID string) bool
|
|
14
|
+
// HasServiceMethod checks if <service-id, method-id> exists in the handlers.
|
|
15
|
+
HasServiceMethod(serviceID, methodID string) bool
|
|
13
16
|
}
|
|
14
17
|
|
|
15
18
|
// muxMethods is a mapping from method id to handler.
|
|
@@ -53,6 +56,39 @@ func (m *mux) Register(handler Handler) error {
|
|
|
53
56
|
return nil
|
|
54
57
|
}
|
|
55
58
|
|
|
59
|
+
// HasService checks if the service ID exists in the handlers.
|
|
60
|
+
func (m *mux) HasService(serviceID string) bool {
|
|
61
|
+
if serviceID == "" {
|
|
62
|
+
return false
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
m.rmtx.Lock()
|
|
66
|
+
defer m.rmtx.Unlock()
|
|
67
|
+
|
|
68
|
+
return len(m.services[serviceID]) != 0
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// HasServiceMethod checks if <service-id, method-id> exists in the handlers.
|
|
72
|
+
func (m *mux) HasServiceMethod(serviceID, methodID string) bool {
|
|
73
|
+
if serviceID == "" || methodID == "" {
|
|
74
|
+
return false
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
m.rmtx.Lock()
|
|
78
|
+
defer m.rmtx.Unlock()
|
|
79
|
+
|
|
80
|
+
handlers := m.services[serviceID]
|
|
81
|
+
for _, mh := range handlers {
|
|
82
|
+
for _, mhMethodID := range mh.GetMethodIDs() {
|
|
83
|
+
if mhMethodID == methodID {
|
|
84
|
+
return true
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return false
|
|
90
|
+
}
|
|
91
|
+
|
|
56
92
|
// InvokeMethod invokes the method matching the service & method ID.
|
|
57
93
|
// Returns false, nil if not found.
|
|
58
94
|
// If service string is empty, ignore it.
|
package/srpc/muxed-conn.go
CHANGED
|
@@ -10,8 +10,8 @@ import (
|
|
|
10
10
|
mp "github.com/libp2p/go-mplex"
|
|
11
11
|
)
|
|
12
12
|
|
|
13
|
-
// NewMuxedConn constructs a new MuxedConn from a
|
|
14
|
-
func NewMuxedConn(conn
|
|
13
|
+
// NewMuxedConn constructs a new MuxedConn from a net.Conn.
|
|
14
|
+
func NewMuxedConn(conn net.Conn, outbound bool) (network.MuxedConn, error) {
|
|
15
15
|
m, err := mp.NewMultiplex(conn, outbound, nil)
|
|
16
16
|
if err != nil {
|
|
17
17
|
return nil, err
|
|
@@ -19,6 +19,11 @@ func NewMuxedConn(conn io.ReadWriteCloser, outbound bool) (network.MuxedConn, er
|
|
|
19
19
|
return mplex.NewMuxedConn(m), nil
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
// NewMuxedConnWithRwc builds a new MuxedConn with a io.ReadWriteCloser.
|
|
23
|
+
func NewMuxedConnWithRwc(ctx context.Context, rwc io.ReadWriteCloser, outbound bool) (network.MuxedConn, error) {
|
|
24
|
+
return NewMuxedConn(NewRwcConn(ctx, rwc, nil, nil, 10), outbound)
|
|
25
|
+
}
|
|
26
|
+
|
|
22
27
|
// NewClientWithConn constructs the muxer and the client.
|
|
23
28
|
//
|
|
24
29
|
// uses libp2p mplex
|