proxy: Put the pb object into the struct

Avoid repeated creation of pb objects.

Signed-off-by: SimFG <1142838399@qq.com>
This commit is contained in:
SimFG 2022-06-24 23:46:53 +08:00
parent 33ba5380df
commit a6bbf7c10b
4 changed files with 44 additions and 70 deletions

View File

@ -18,98 +18,81 @@ import (
"context"
pb "go.etcd.io/etcd/api/v3/etcdserverpb"
"go.etcd.io/etcd/client/v3"
clientv3 "go.etcd.io/etcd/client/v3"
)
type AuthProxy struct {
client *clientv3.Client
authClient pb.AuthClient
}
func NewAuthProxy(c *clientv3.Client) pb.AuthServer {
return &AuthProxy{client: c}
return &AuthProxy{authClient: pb.NewAuthClient(c.ActiveConnection())}
}
func (ap *AuthProxy) AuthEnable(ctx context.Context, r *pb.AuthEnableRequest) (*pb.AuthEnableResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).AuthEnable(ctx, r)
return ap.authClient.AuthEnable(ctx, r)
}
func (ap *AuthProxy) AuthDisable(ctx context.Context, r *pb.AuthDisableRequest) (*pb.AuthDisableResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).AuthDisable(ctx, r)
return ap.authClient.AuthDisable(ctx, r)
}
func (ap *AuthProxy) AuthStatus(ctx context.Context, r *pb.AuthStatusRequest) (*pb.AuthStatusResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).AuthStatus(ctx, r)
return ap.authClient.AuthStatus(ctx, r)
}
func (ap *AuthProxy) Authenticate(ctx context.Context, r *pb.AuthenticateRequest) (*pb.AuthenticateResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).Authenticate(ctx, r)
return ap.authClient.Authenticate(ctx, r)
}
func (ap *AuthProxy) RoleAdd(ctx context.Context, r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).RoleAdd(ctx, r)
return ap.authClient.RoleAdd(ctx, r)
}
func (ap *AuthProxy) RoleDelete(ctx context.Context, r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).RoleDelete(ctx, r)
return ap.authClient.RoleDelete(ctx, r)
}
func (ap *AuthProxy) RoleGet(ctx context.Context, r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).RoleGet(ctx, r)
return ap.authClient.RoleGet(ctx, r)
}
func (ap *AuthProxy) RoleList(ctx context.Context, r *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).RoleList(ctx, r)
return ap.authClient.RoleList(ctx, r)
}
func (ap *AuthProxy) RoleRevokePermission(ctx context.Context, r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).RoleRevokePermission(ctx, r)
return ap.authClient.RoleRevokePermission(ctx, r)
}
func (ap *AuthProxy) RoleGrantPermission(ctx context.Context, r *pb.AuthRoleGrantPermissionRequest) (*pb.AuthRoleGrantPermissionResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).RoleGrantPermission(ctx, r)
return ap.authClient.RoleGrantPermission(ctx, r)
}
func (ap *AuthProxy) UserAdd(ctx context.Context, r *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).UserAdd(ctx, r)
return ap.authClient.UserAdd(ctx, r)
}
func (ap *AuthProxy) UserDelete(ctx context.Context, r *pb.AuthUserDeleteRequest) (*pb.AuthUserDeleteResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).UserDelete(ctx, r)
return ap.authClient.UserDelete(ctx, r)
}
func (ap *AuthProxy) UserGet(ctx context.Context, r *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).UserGet(ctx, r)
return ap.authClient.UserGet(ctx, r)
}
func (ap *AuthProxy) UserList(ctx context.Context, r *pb.AuthUserListRequest) (*pb.AuthUserListResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).UserList(ctx, r)
return ap.authClient.UserList(ctx, r)
}
func (ap *AuthProxy) UserGrantRole(ctx context.Context, r *pb.AuthUserGrantRoleRequest) (*pb.AuthUserGrantRoleResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).UserGrantRole(ctx, r)
return ap.authClient.UserGrantRole(ctx, r)
}
func (ap *AuthProxy) UserRevokeRole(ctx context.Context, r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).UserRevokeRole(ctx, r)
return ap.authClient.UserRevokeRole(ctx, r)
}
func (ap *AuthProxy) UserChangePassword(ctx context.Context, r *pb.AuthUserChangePasswordRequest) (*pb.AuthUserChangePasswordResponse, error) {
conn := ap.client.ActiveConnection()
return pb.NewAuthClient(conn).UserChangePassword(ctx, r)
return ap.authClient.UserChangePassword(ctx, r)
}

View File

@ -17,35 +17,34 @@ package grpcproxy
import (
"context"
"go.etcd.io/etcd/client/v3"
clientv3 "go.etcd.io/etcd/client/v3"
"go.etcd.io/etcd/server/v3/etcdserver/api/v3election/v3electionpb"
)
type electionProxy struct {
client *clientv3.Client
electionClient v3electionpb.ElectionClient
}
func NewElectionProxy(client *clientv3.Client) v3electionpb.ElectionServer {
return &electionProxy{client: client}
return &electionProxy{electionClient: v3electionpb.NewElectionClient(client.ActiveConnection())}
}
func (ep *electionProxy) Campaign(ctx context.Context, req *v3electionpb.CampaignRequest) (*v3electionpb.CampaignResponse, error) {
return v3electionpb.NewElectionClient(ep.client.ActiveConnection()).Campaign(ctx, req)
return ep.electionClient.Campaign(ctx, req)
}
func (ep *electionProxy) Proclaim(ctx context.Context, req *v3electionpb.ProclaimRequest) (*v3electionpb.ProclaimResponse, error) {
return v3electionpb.NewElectionClient(ep.client.ActiveConnection()).Proclaim(ctx, req)
return ep.electionClient.Proclaim(ctx, req)
}
func (ep *electionProxy) Leader(ctx context.Context, req *v3electionpb.LeaderRequest) (*v3electionpb.LeaderResponse, error) {
return v3electionpb.NewElectionClient(ep.client.ActiveConnection()).Leader(ctx, req)
return ep.electionClient.Leader(ctx, req)
}
func (ep *electionProxy) Observe(req *v3electionpb.LeaderRequest, s v3electionpb.Election_ObserveServer) error {
conn := ep.client.ActiveConnection()
ctx, cancel := context.WithCancel(s.Context())
defer cancel()
sc, err := v3electionpb.NewElectionClient(conn).Observe(ctx, req)
sc, err := ep.electionClient.Observe(ctx, req)
if err != nil {
return err
}
@ -61,5 +60,5 @@ func (ep *electionProxy) Observe(req *v3electionpb.LeaderRequest, s v3electionpb
}
func (ep *electionProxy) Resign(ctx context.Context, req *v3electionpb.ResignRequest) (*v3electionpb.ResignResponse, error) {
return v3electionpb.NewElectionClient(ep.client.ActiveConnection()).Resign(ctx, req)
return ep.electionClient.Resign(ctx, req)
}

View File

@ -17,22 +17,22 @@ package grpcproxy
import (
"context"
"go.etcd.io/etcd/client/v3"
clientv3 "go.etcd.io/etcd/client/v3"
"go.etcd.io/etcd/server/v3/etcdserver/api/v3lock/v3lockpb"
)
type lockProxy struct {
client *clientv3.Client
lockClient v3lockpb.LockClient
}
func NewLockProxy(client *clientv3.Client) v3lockpb.LockServer {
return &lockProxy{client: client}
return &lockProxy{lockClient: v3lockpb.NewLockClient(client.ActiveConnection())}
}
func (lp *lockProxy) Lock(ctx context.Context, req *v3lockpb.LockRequest) (*v3lockpb.LockResponse, error) {
return v3lockpb.NewLockClient(lp.client.ActiveConnection()).Lock(ctx, req)
return lp.lockClient.Lock(ctx, req)
}
func (lp *lockProxy) Unlock(ctx context.Context, req *v3lockpb.UnlockRequest) (*v3lockpb.UnlockResponse, error) {
return v3lockpb.NewLockClient(lp.client.ActiveConnection()).Unlock(ctx, req)
return lp.lockClient.Unlock(ctx, req)
}

View File

@ -19,32 +19,30 @@ import (
"io"
pb "go.etcd.io/etcd/api/v3/etcdserverpb"
"go.etcd.io/etcd/client/v3"
clientv3 "go.etcd.io/etcd/client/v3"
)
type maintenanceProxy struct {
client *clientv3.Client
maintenanceClient pb.MaintenanceClient
}
func NewMaintenanceProxy(c *clientv3.Client) pb.MaintenanceServer {
return &maintenanceProxy{
client: c,
maintenanceClient: pb.NewMaintenanceClient(c.ActiveConnection()),
}
}
func (mp *maintenanceProxy) Defragment(ctx context.Context, dr *pb.DefragmentRequest) (*pb.DefragmentResponse, error) {
conn := mp.client.ActiveConnection()
return pb.NewMaintenanceClient(conn).Defragment(ctx, dr)
return mp.maintenanceClient.Defragment(ctx, dr)
}
func (mp *maintenanceProxy) Snapshot(sr *pb.SnapshotRequest, stream pb.Maintenance_SnapshotServer) error {
conn := mp.client.ActiveConnection()
ctx, cancel := context.WithCancel(stream.Context())
defer cancel()
ctx = withClientAuthToken(ctx, stream.Context())
sc, err := pb.NewMaintenanceClient(conn).Snapshot(ctx, sr)
sc, err := mp.maintenanceClient.Snapshot(ctx, sr)
if err != nil {
return err
}
@ -65,31 +63,25 @@ func (mp *maintenanceProxy) Snapshot(sr *pb.SnapshotRequest, stream pb.Maintenan
}
func (mp *maintenanceProxy) Hash(ctx context.Context, r *pb.HashRequest) (*pb.HashResponse, error) {
conn := mp.client.ActiveConnection()
return pb.NewMaintenanceClient(conn).Hash(ctx, r)
return mp.maintenanceClient.Hash(ctx, r)
}
func (mp *maintenanceProxy) HashKV(ctx context.Context, r *pb.HashKVRequest) (*pb.HashKVResponse, error) {
conn := mp.client.ActiveConnection()
return pb.NewMaintenanceClient(conn).HashKV(ctx, r)
return mp.maintenanceClient.HashKV(ctx, r)
}
func (mp *maintenanceProxy) Alarm(ctx context.Context, r *pb.AlarmRequest) (*pb.AlarmResponse, error) {
conn := mp.client.ActiveConnection()
return pb.NewMaintenanceClient(conn).Alarm(ctx, r)
return mp.maintenanceClient.Alarm(ctx, r)
}
func (mp *maintenanceProxy) Status(ctx context.Context, r *pb.StatusRequest) (*pb.StatusResponse, error) {
conn := mp.client.ActiveConnection()
return pb.NewMaintenanceClient(conn).Status(ctx, r)
return mp.maintenanceClient.Status(ctx, r)
}
func (mp *maintenanceProxy) MoveLeader(ctx context.Context, r *pb.MoveLeaderRequest) (*pb.MoveLeaderResponse, error) {
conn := mp.client.ActiveConnection()
return pb.NewMaintenanceClient(conn).MoveLeader(ctx, r)
return mp.maintenanceClient.MoveLeader(ctx, r)
}
func (mp *maintenanceProxy) Downgrade(ctx context.Context, r *pb.DowngradeRequest) (*pb.DowngradeResponse, error) {
conn := mp.client.ActiveConnection()
return pb.NewMaintenanceClient(conn).Downgrade(ctx, r)
return mp.maintenanceClient.Downgrade(ctx, r)
}