-
Notifications
You must be signed in to change notification settings - Fork 2
/
entity_rpc.go
67 lines (54 loc) · 3.17 KB
/
entity_rpc.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package framework
import (
"git.golaxy.org/core/utils/async"
"git.golaxy.org/core/utils/uid"
"git.golaxy.org/framework/plugins/rpc/rpcutil"
)
// RPC 向分布式实体目标服务发送RPC
func (e *EntityBehavior) RPC(service, comp, method string, args ...any) async.AsyncRet {
return rpcutil.ProxyEntity(e, e.GetId()).RPC(service, comp, method, args...)
}
// BalanceRPC 使用负载均衡模式,向分布式实体目标服务发送RPC
func (e *EntityBehavior) BalanceRPC(service, comp, method string, args ...any) async.AsyncRet {
return rpcutil.ProxyEntity(e, e.GetId()).BalanceRPC(service, comp, method, args...)
}
// GlobalBalanceRPC 使用全局负载均衡模式,向分布式实体任意服务发送RPC
func (e *EntityBehavior) GlobalBalanceRPC(excludeSelf bool, comp, method string, args ...any) async.AsyncRet {
return rpcutil.ProxyEntity(e, e.GetId()).GlobalBalanceRPC(excludeSelf, comp, method, args...)
}
// OneWayRPC 向分布式实体目标服务发送单向RPC
func (e *EntityBehavior) OneWayRPC(service, comp, method string, args ...any) error {
return rpcutil.ProxyEntity(e, e.GetId()).OneWayRPC(service, comp, method, args...)
}
// BalanceOneWayRPC 使用负载均衡模式,向分布式实体目标服务发送单向RPC
func (e *EntityBehavior) BalanceOneWayRPC(service, comp, method string, args ...any) error {
return rpcutil.ProxyEntity(e, e.GetId()).BalanceOneWayRPC(service, comp, method, args...)
}
// GlobalBalanceOneWayRPC 使用全局负载均衡模式,向分布式实体任意服务发送单向RPC
func (e *EntityBehavior) GlobalBalanceOneWayRPC(excludeSelf bool, comp, method string, args ...any) error {
return rpcutil.ProxyEntity(e, e.GetId()).GlobalBalanceOneWayRPC(excludeSelf, comp, method, args...)
}
// BroadcastOneWayRPC 使用广播模式,向分布式实体目标服务发送单向RPC
func (e *EntityBehavior) BroadcastOneWayRPC(excludeSelf bool, service, comp, method string, args ...any) error {
return rpcutil.ProxyEntity(e, e.GetId()).BroadcastOneWayRPC(excludeSelf, service, comp, method, args...)
}
// GlobalBroadcastOneWayRPC 使用全局广播模式,向分布式实体所有服务发送单向RPC
func (e *EntityBehavior) GlobalBroadcastOneWayRPC(excludeSelf bool, comp, method string, args ...any) error {
return rpcutil.ProxyEntity(e, e.GetId()).GlobalBroadcastOneWayRPC(excludeSelf, comp, method, args...)
}
// CliRPC 向客户端发送RPC
func (e *EntityBehavior) CliRPC(method string, args ...any) async.AsyncRet {
return rpcutil.ProxyEntity(e, e.GetId()).CliRPC(method, args...)
}
// CliRPCToEntity 向客户端实体发送RPC
func (e *EntityBehavior) CliRPCToEntity(entityId uid.Id, method string, args ...any) async.AsyncRet {
return rpcutil.ProxyEntity(e, e.GetId()).CliRPCToEntity(entityId, method, args...)
}
// OneWayCliRPC 向客户端发送单向RPC
func (e *EntityBehavior) OneWayCliRPC(method string, args ...any) error {
return rpcutil.ProxyEntity(e, e.GetId()).OneWayCliRPC(method, args...)
}
// OneWayCliRPCToEntity 向客户端实体发送单向RPC
func (e *EntityBehavior) OneWayCliRPCToEntity(entityId uid.Id, method string, args ...any) error {
return rpcutil.ProxyEntity(e, e.GetId()).OneWayCliRPCToEntity(entityId, method, args...)
}