mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-06-04 12:09:27 +02:00
lnrpc/wtclientrpc: correctly merge tower client info
Prior to this commit, the wtclient would request tower info from both the legacy client and the anchors client and would then merge the results returned. This is incorrect since the two clients will have different session info and different "active" statuses for the same tower. This commit thus ensures that we dont lose this info.
This commit is contained in:
parent
c1be420696
commit
b635629e3c
@ -1,10 +1,13 @@
|
|||||||
package wtclientrpc
|
package wtclientrpc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/binary"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/btcsuite/btcd/btcec/v2"
|
"github.com/btcsuite/btcd/btcec/v2"
|
||||||
@ -274,30 +277,46 @@ func (c *WatchtowerClient) ListTowers(ctx context.Context,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Collect all the anchor client towers.
|
||||||
|
rpcTowers := make(map[wtdb.TowerID]*Tower)
|
||||||
|
for _, tower := range anchorTowers {
|
||||||
|
rpcTower := marshallTower(
|
||||||
|
tower, PolicyType_ANCHOR, req.IncludeSessions,
|
||||||
|
ackCounts, committedUpdateCounts,
|
||||||
|
)
|
||||||
|
|
||||||
|
rpcTowers[tower.ID] = rpcTower
|
||||||
|
}
|
||||||
|
|
||||||
legacyTowers, err := c.cfg.Client.RegisteredTowers(opts...)
|
legacyTowers, err := c.cfg.Client.RegisteredTowers(opts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Filter duplicates.
|
// Collect all the legacy client towers. If it has any of the same
|
||||||
towers := make(map[wtdb.TowerID]*wtclient.RegisteredTower)
|
// towers that the anchors client has, then just add the session info
|
||||||
for _, tower := range anchorTowers {
|
// for the legacy client to the existing tower.
|
||||||
towers[tower.Tower.ID] = tower
|
|
||||||
}
|
|
||||||
for _, tower := range legacyTowers {
|
for _, tower := range legacyTowers {
|
||||||
towers[tower.Tower.ID] = tower
|
|
||||||
}
|
|
||||||
|
|
||||||
rpcTowers := make([]*Tower, 0, len(towers))
|
|
||||||
for _, tower := range towers {
|
|
||||||
rpcTower := marshallTower(
|
rpcTower := marshallTower(
|
||||||
tower, req.IncludeSessions, ackCounts,
|
tower, PolicyType_LEGACY, req.IncludeSessions,
|
||||||
committedUpdateCounts,
|
ackCounts, committedUpdateCounts,
|
||||||
)
|
)
|
||||||
rpcTowers = append(rpcTowers, rpcTower)
|
|
||||||
|
t, ok := rpcTowers[tower.ID]
|
||||||
|
if !ok {
|
||||||
|
rpcTowers[tower.ID] = rpcTower
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
t.SessionInfo = append(t.SessionInfo, rpcTower.SessionInfo...)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &ListTowersResponse{Towers: rpcTowers}, nil
|
towers := make([]*Tower, 0, len(rpcTowers))
|
||||||
|
for _, tower := range rpcTowers {
|
||||||
|
towers = append(towers, tower)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &ListTowersResponse{Towers: towers}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetTowerInfo retrieves information for a registered watchtower.
|
// GetTowerInfo retrieves information for a registered watchtower.
|
||||||
@ -317,18 +336,37 @@ func (c *WatchtowerClient) GetTowerInfo(ctx context.Context,
|
|||||||
req.IncludeSessions,
|
req.IncludeSessions,
|
||||||
)
|
)
|
||||||
|
|
||||||
var tower *wtclient.RegisteredTower
|
// Get the tower and its sessions from anchors client.
|
||||||
tower, err = c.cfg.Client.LookupTower(pubKey, opts...)
|
tower, err := c.cfg.AnchorClient.LookupTower(pubKey, opts...)
|
||||||
if err == wtdb.ErrTowerNotFound {
|
if err != nil {
|
||||||
tower, err = c.cfg.AnchorClient.LookupTower(pubKey, opts...)
|
return nil, err
|
||||||
}
|
}
|
||||||
|
rpcTower := marshallTower(
|
||||||
|
tower, PolicyType_ANCHOR, req.IncludeSessions, ackCounts,
|
||||||
|
committedUpdateCounts,
|
||||||
|
)
|
||||||
|
|
||||||
|
// Get the tower and its sessions from legacy client.
|
||||||
|
tower, err = c.cfg.Client.LookupTower(pubKey, opts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return marshallTower(
|
rpcLegacyTower := marshallTower(
|
||||||
tower, req.IncludeSessions, ackCounts, committedUpdateCounts,
|
tower, PolicyType_LEGACY, req.IncludeSessions, ackCounts,
|
||||||
), nil
|
committedUpdateCounts,
|
||||||
|
)
|
||||||
|
|
||||||
|
if !bytes.Equal(rpcTower.Pubkey, rpcLegacyTower.Pubkey) {
|
||||||
|
return nil, fmt.Errorf("legacy and anchor clients returned " +
|
||||||
|
"inconsistent results for the given tower")
|
||||||
|
}
|
||||||
|
|
||||||
|
rpcTower.SessionInfo = append(
|
||||||
|
rpcTower.SessionInfo, rpcLegacyTower.SessionInfo...,
|
||||||
|
)
|
||||||
|
|
||||||
|
return rpcTower, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// constructFunctionalOptions is a helper function that constructs a list of
|
// constructFunctionalOptions is a helper function that constructs a list of
|
||||||
@ -437,8 +475,8 @@ func (c *WatchtowerClient) Policy(ctx context.Context,
|
|||||||
|
|
||||||
// marshallTower converts a client registered watchtower into its corresponding
|
// marshallTower converts a client registered watchtower into its corresponding
|
||||||
// RPC type.
|
// RPC type.
|
||||||
func marshallTower(tower *wtclient.RegisteredTower, includeSessions bool,
|
func marshallTower(tower *wtclient.RegisteredTower, policyType PolicyType,
|
||||||
ackCounts map[wtdb.SessionID]uint16,
|
includeSessions bool, ackCounts map[wtdb.SessionID]uint16,
|
||||||
pendingCounts map[wtdb.SessionID]uint16) *Tower {
|
pendingCounts map[wtdb.SessionID]uint16) *Tower {
|
||||||
|
|
||||||
rpcAddrs := make([]string, 0, len(tower.Addresses))
|
rpcAddrs := make([]string, 0, len(tower.Addresses))
|
||||||
@ -448,8 +486,24 @@ func marshallTower(tower *wtclient.RegisteredTower, includeSessions bool,
|
|||||||
|
|
||||||
var rpcSessions []*TowerSession
|
var rpcSessions []*TowerSession
|
||||||
if includeSessions {
|
if includeSessions {
|
||||||
rpcSessions = make([]*TowerSession, 0, len(tower.Sessions))
|
// To ensure that the output order is deterministic for a given
|
||||||
|
// set of sessions, we put the sessions into a slice and order
|
||||||
|
// them based on session ID.
|
||||||
|
sessions := make([]*wtdb.ClientSession, 0, len(tower.Sessions))
|
||||||
for _, session := range tower.Sessions {
|
for _, session := range tower.Sessions {
|
||||||
|
sessions = append(sessions, session)
|
||||||
|
}
|
||||||
|
|
||||||
|
sort.Slice(sessions, func(i, j int) bool {
|
||||||
|
id1 := sessions[i].ID
|
||||||
|
id2 := sessions[j].ID
|
||||||
|
|
||||||
|
return binary.BigEndian.Uint64(id1[:]) <
|
||||||
|
binary.BigEndian.Uint64(id2[:])
|
||||||
|
})
|
||||||
|
|
||||||
|
rpcSessions = make([]*TowerSession, 0, len(tower.Sessions))
|
||||||
|
for _, session := range sessions {
|
||||||
satPerVByte := session.Policy.SweepFeeRate.FeePerKVByte() / 1000
|
satPerVByte := session.Policy.SweepFeeRate.FeePerKVByte() / 1000
|
||||||
rpcSessions = append(rpcSessions, &TowerSession{
|
rpcSessions = append(rpcSessions, &TowerSession{
|
||||||
NumBackups: uint32(ackCounts[session.ID]),
|
NumBackups: uint32(ackCounts[session.ID]),
|
||||||
@ -463,11 +517,22 @@ func marshallTower(tower *wtclient.RegisteredTower, includeSessions bool,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return &Tower{
|
rpcTower := &Tower{
|
||||||
Pubkey: tower.IdentityKey.SerializeCompressed(),
|
Pubkey: tower.IdentityKey.SerializeCompressed(),
|
||||||
Addresses: rpcAddrs,
|
Addresses: rpcAddrs,
|
||||||
|
SessionInfo: []*TowerSessionInfo{{
|
||||||
|
PolicyType: policyType,
|
||||||
|
ActiveSessionCandidate: tower.ActiveSessionCandidate,
|
||||||
|
NumSessions: uint32(len(tower.Sessions)),
|
||||||
|
Sessions: rpcSessions,
|
||||||
|
}},
|
||||||
|
// The below fields are populated for backwards compatibility
|
||||||
|
// but will be removed in a future commit when the proto fields
|
||||||
|
// are removed.
|
||||||
ActiveSessionCandidate: tower.ActiveSessionCandidate,
|
ActiveSessionCandidate: tower.ActiveSessionCandidate,
|
||||||
NumSessions: uint32(len(tower.Sessions)),
|
NumSessions: uint32(len(tower.Sessions)),
|
||||||
Sessions: rpcSessions,
|
Sessions: rpcSessions,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return rpcTower
|
||||||
}
|
}
|
||||||
|
@ -418,12 +418,26 @@ type Tower struct {
|
|||||||
Pubkey []byte `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
|
Pubkey []byte `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
|
||||||
// The list of addresses the watchtower is reachable over.
|
// The list of addresses the watchtower is reachable over.
|
||||||
Addresses []string `protobuf:"bytes,2,rep,name=addresses,proto3" json:"addresses,omitempty"`
|
Addresses []string `protobuf:"bytes,2,rep,name=addresses,proto3" json:"addresses,omitempty"`
|
||||||
|
// Deprecated, use the active_session_candidate field under the
|
||||||
|
// correct identifier in the client_type map.
|
||||||
// Whether the watchtower is currently a candidate for new sessions.
|
// Whether the watchtower is currently a candidate for new sessions.
|
||||||
|
//
|
||||||
|
// Deprecated: Do not use.
|
||||||
ActiveSessionCandidate bool `protobuf:"varint,3,opt,name=active_session_candidate,json=activeSessionCandidate,proto3" json:"active_session_candidate,omitempty"`
|
ActiveSessionCandidate bool `protobuf:"varint,3,opt,name=active_session_candidate,json=activeSessionCandidate,proto3" json:"active_session_candidate,omitempty"`
|
||||||
|
// Deprecated, use the num_sessions field under the correct identifier
|
||||||
|
// in the client_type map.
|
||||||
// The number of sessions that have been negotiated with the watchtower.
|
// The number of sessions that have been negotiated with the watchtower.
|
||||||
|
//
|
||||||
|
// Deprecated: Do not use.
|
||||||
NumSessions uint32 `protobuf:"varint,4,opt,name=num_sessions,json=numSessions,proto3" json:"num_sessions,omitempty"`
|
NumSessions uint32 `protobuf:"varint,4,opt,name=num_sessions,json=numSessions,proto3" json:"num_sessions,omitempty"`
|
||||||
|
// Deprecated, use the sessions field under the correct identifier in the
|
||||||
|
// client_type map.
|
||||||
// The list of sessions that have been negotiated with the watchtower.
|
// The list of sessions that have been negotiated with the watchtower.
|
||||||
|
//
|
||||||
|
// Deprecated: Do not use.
|
||||||
Sessions []*TowerSession `protobuf:"bytes,5,rep,name=sessions,proto3" json:"sessions,omitempty"`
|
Sessions []*TowerSession `protobuf:"bytes,5,rep,name=sessions,proto3" json:"sessions,omitempty"`
|
||||||
|
// A list sessions held with the tower.
|
||||||
|
SessionInfo []*TowerSessionInfo `protobuf:"bytes,6,rep,name=session_info,json=sessionInfo,proto3" json:"session_info,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Tower) Reset() {
|
func (x *Tower) Reset() {
|
||||||
@ -472,6 +486,7 @@ func (x *Tower) GetAddresses() []string {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Deprecated: Do not use.
|
||||||
func (x *Tower) GetActiveSessionCandidate() bool {
|
func (x *Tower) GetActiveSessionCandidate() bool {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.ActiveSessionCandidate
|
return x.ActiveSessionCandidate
|
||||||
@ -479,6 +494,7 @@ func (x *Tower) GetActiveSessionCandidate() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Deprecated: Do not use.
|
||||||
func (x *Tower) GetNumSessions() uint32 {
|
func (x *Tower) GetNumSessions() uint32 {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.NumSessions
|
return x.NumSessions
|
||||||
@ -486,6 +502,7 @@ func (x *Tower) GetNumSessions() uint32 {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Deprecated: Do not use.
|
||||||
func (x *Tower) GetSessions() []*TowerSession {
|
func (x *Tower) GetSessions() []*TowerSession {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.Sessions
|
return x.Sessions
|
||||||
@ -493,6 +510,88 @@ func (x *Tower) GetSessions() []*TowerSession {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *Tower) GetSessionInfo() []*TowerSessionInfo {
|
||||||
|
if x != nil {
|
||||||
|
return x.SessionInfo
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type TowerSessionInfo struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Whether the watchtower is currently a candidate for new sessions.
|
||||||
|
ActiveSessionCandidate bool `protobuf:"varint,1,opt,name=active_session_candidate,json=activeSessionCandidate,proto3" json:"active_session_candidate,omitempty"`
|
||||||
|
// The number of sessions that have been negotiated with the watchtower.
|
||||||
|
NumSessions uint32 `protobuf:"varint,2,opt,name=num_sessions,json=numSessions,proto3" json:"num_sessions,omitempty"`
|
||||||
|
// The list of sessions that have been negotiated with the watchtower.
|
||||||
|
Sessions []*TowerSession `protobuf:"bytes,3,rep,name=sessions,proto3" json:"sessions,omitempty"`
|
||||||
|
// The session's policy type.
|
||||||
|
PolicyType PolicyType `protobuf:"varint,4,opt,name=policy_type,json=policyType,proto3,enum=wtclientrpc.PolicyType" json:"policy_type,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *TowerSessionInfo) Reset() {
|
||||||
|
*x = TowerSessionInfo{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_wtclientrpc_wtclient_proto_msgTypes[7]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *TowerSessionInfo) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*TowerSessionInfo) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *TowerSessionInfo) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_wtclientrpc_wtclient_proto_msgTypes[7]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use TowerSessionInfo.ProtoReflect.Descriptor instead.
|
||||||
|
func (*TowerSessionInfo) Descriptor() ([]byte, []int) {
|
||||||
|
return file_wtclientrpc_wtclient_proto_rawDescGZIP(), []int{7}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *TowerSessionInfo) GetActiveSessionCandidate() bool {
|
||||||
|
if x != nil {
|
||||||
|
return x.ActiveSessionCandidate
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *TowerSessionInfo) GetNumSessions() uint32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.NumSessions
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *TowerSessionInfo) GetSessions() []*TowerSession {
|
||||||
|
if x != nil {
|
||||||
|
return x.Sessions
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *TowerSessionInfo) GetPolicyType() PolicyType {
|
||||||
|
if x != nil {
|
||||||
|
return x.PolicyType
|
||||||
|
}
|
||||||
|
return PolicyType_LEGACY
|
||||||
|
}
|
||||||
|
|
||||||
type ListTowersRequest struct {
|
type ListTowersRequest struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
@ -505,7 +604,7 @@ type ListTowersRequest struct {
|
|||||||
func (x *ListTowersRequest) Reset() {
|
func (x *ListTowersRequest) Reset() {
|
||||||
*x = ListTowersRequest{}
|
*x = ListTowersRequest{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_wtclientrpc_wtclient_proto_msgTypes[7]
|
mi := &file_wtclientrpc_wtclient_proto_msgTypes[8]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -518,7 +617,7 @@ func (x *ListTowersRequest) String() string {
|
|||||||
func (*ListTowersRequest) ProtoMessage() {}
|
func (*ListTowersRequest) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *ListTowersRequest) ProtoReflect() protoreflect.Message {
|
func (x *ListTowersRequest) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_wtclientrpc_wtclient_proto_msgTypes[7]
|
mi := &file_wtclientrpc_wtclient_proto_msgTypes[8]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -531,7 +630,7 @@ func (x *ListTowersRequest) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use ListTowersRequest.ProtoReflect.Descriptor instead.
|
// Deprecated: Use ListTowersRequest.ProtoReflect.Descriptor instead.
|
||||||
func (*ListTowersRequest) Descriptor() ([]byte, []int) {
|
func (*ListTowersRequest) Descriptor() ([]byte, []int) {
|
||||||
return file_wtclientrpc_wtclient_proto_rawDescGZIP(), []int{7}
|
return file_wtclientrpc_wtclient_proto_rawDescGZIP(), []int{8}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *ListTowersRequest) GetIncludeSessions() bool {
|
func (x *ListTowersRequest) GetIncludeSessions() bool {
|
||||||
@ -553,7 +652,7 @@ type ListTowersResponse struct {
|
|||||||
func (x *ListTowersResponse) Reset() {
|
func (x *ListTowersResponse) Reset() {
|
||||||
*x = ListTowersResponse{}
|
*x = ListTowersResponse{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_wtclientrpc_wtclient_proto_msgTypes[8]
|
mi := &file_wtclientrpc_wtclient_proto_msgTypes[9]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -566,7 +665,7 @@ func (x *ListTowersResponse) String() string {
|
|||||||
func (*ListTowersResponse) ProtoMessage() {}
|
func (*ListTowersResponse) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *ListTowersResponse) ProtoReflect() protoreflect.Message {
|
func (x *ListTowersResponse) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_wtclientrpc_wtclient_proto_msgTypes[8]
|
mi := &file_wtclientrpc_wtclient_proto_msgTypes[9]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -579,7 +678,7 @@ func (x *ListTowersResponse) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use ListTowersResponse.ProtoReflect.Descriptor instead.
|
// Deprecated: Use ListTowersResponse.ProtoReflect.Descriptor instead.
|
||||||
func (*ListTowersResponse) Descriptor() ([]byte, []int) {
|
func (*ListTowersResponse) Descriptor() ([]byte, []int) {
|
||||||
return file_wtclientrpc_wtclient_proto_rawDescGZIP(), []int{8}
|
return file_wtclientrpc_wtclient_proto_rawDescGZIP(), []int{9}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *ListTowersResponse) GetTowers() []*Tower {
|
func (x *ListTowersResponse) GetTowers() []*Tower {
|
||||||
@ -598,7 +697,7 @@ type StatsRequest struct {
|
|||||||
func (x *StatsRequest) Reset() {
|
func (x *StatsRequest) Reset() {
|
||||||
*x = StatsRequest{}
|
*x = StatsRequest{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_wtclientrpc_wtclient_proto_msgTypes[9]
|
mi := &file_wtclientrpc_wtclient_proto_msgTypes[10]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -611,7 +710,7 @@ func (x *StatsRequest) String() string {
|
|||||||
func (*StatsRequest) ProtoMessage() {}
|
func (*StatsRequest) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *StatsRequest) ProtoReflect() protoreflect.Message {
|
func (x *StatsRequest) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_wtclientrpc_wtclient_proto_msgTypes[9]
|
mi := &file_wtclientrpc_wtclient_proto_msgTypes[10]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -624,7 +723,7 @@ func (x *StatsRequest) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use StatsRequest.ProtoReflect.Descriptor instead.
|
// Deprecated: Use StatsRequest.ProtoReflect.Descriptor instead.
|
||||||
func (*StatsRequest) Descriptor() ([]byte, []int) {
|
func (*StatsRequest) Descriptor() ([]byte, []int) {
|
||||||
return file_wtclientrpc_wtclient_proto_rawDescGZIP(), []int{9}
|
return file_wtclientrpc_wtclient_proto_rawDescGZIP(), []int{10}
|
||||||
}
|
}
|
||||||
|
|
||||||
type StatsResponse struct {
|
type StatsResponse struct {
|
||||||
@ -650,7 +749,7 @@ type StatsResponse struct {
|
|||||||
func (x *StatsResponse) Reset() {
|
func (x *StatsResponse) Reset() {
|
||||||
*x = StatsResponse{}
|
*x = StatsResponse{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_wtclientrpc_wtclient_proto_msgTypes[10]
|
mi := &file_wtclientrpc_wtclient_proto_msgTypes[11]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -663,7 +762,7 @@ func (x *StatsResponse) String() string {
|
|||||||
func (*StatsResponse) ProtoMessage() {}
|
func (*StatsResponse) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *StatsResponse) ProtoReflect() protoreflect.Message {
|
func (x *StatsResponse) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_wtclientrpc_wtclient_proto_msgTypes[10]
|
mi := &file_wtclientrpc_wtclient_proto_msgTypes[11]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -676,7 +775,7 @@ func (x *StatsResponse) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use StatsResponse.ProtoReflect.Descriptor instead.
|
// Deprecated: Use StatsResponse.ProtoReflect.Descriptor instead.
|
||||||
func (*StatsResponse) Descriptor() ([]byte, []int) {
|
func (*StatsResponse) Descriptor() ([]byte, []int) {
|
||||||
return file_wtclientrpc_wtclient_proto_rawDescGZIP(), []int{10}
|
return file_wtclientrpc_wtclient_proto_rawDescGZIP(), []int{11}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *StatsResponse) GetNumBackups() uint32 {
|
func (x *StatsResponse) GetNumBackups() uint32 {
|
||||||
@ -726,7 +825,7 @@ type PolicyRequest struct {
|
|||||||
func (x *PolicyRequest) Reset() {
|
func (x *PolicyRequest) Reset() {
|
||||||
*x = PolicyRequest{}
|
*x = PolicyRequest{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_wtclientrpc_wtclient_proto_msgTypes[11]
|
mi := &file_wtclientrpc_wtclient_proto_msgTypes[12]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -739,7 +838,7 @@ func (x *PolicyRequest) String() string {
|
|||||||
func (*PolicyRequest) ProtoMessage() {}
|
func (*PolicyRequest) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *PolicyRequest) ProtoReflect() protoreflect.Message {
|
func (x *PolicyRequest) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_wtclientrpc_wtclient_proto_msgTypes[11]
|
mi := &file_wtclientrpc_wtclient_proto_msgTypes[12]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -752,7 +851,7 @@ func (x *PolicyRequest) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use PolicyRequest.ProtoReflect.Descriptor instead.
|
// Deprecated: Use PolicyRequest.ProtoReflect.Descriptor instead.
|
||||||
func (*PolicyRequest) Descriptor() ([]byte, []int) {
|
func (*PolicyRequest) Descriptor() ([]byte, []int) {
|
||||||
return file_wtclientrpc_wtclient_proto_rawDescGZIP(), []int{11}
|
return file_wtclientrpc_wtclient_proto_rawDescGZIP(), []int{12}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *PolicyRequest) GetPolicyType() PolicyType {
|
func (x *PolicyRequest) GetPolicyType() PolicyType {
|
||||||
@ -784,7 +883,7 @@ type PolicyResponse struct {
|
|||||||
func (x *PolicyResponse) Reset() {
|
func (x *PolicyResponse) Reset() {
|
||||||
*x = PolicyResponse{}
|
*x = PolicyResponse{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_wtclientrpc_wtclient_proto_msgTypes[12]
|
mi := &file_wtclientrpc_wtclient_proto_msgTypes[13]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -797,7 +896,7 @@ func (x *PolicyResponse) String() string {
|
|||||||
func (*PolicyResponse) ProtoMessage() {}
|
func (*PolicyResponse) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *PolicyResponse) ProtoReflect() protoreflect.Message {
|
func (x *PolicyResponse) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_wtclientrpc_wtclient_proto_msgTypes[12]
|
mi := &file_wtclientrpc_wtclient_proto_msgTypes[13]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -810,7 +909,7 @@ func (x *PolicyResponse) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use PolicyResponse.ProtoReflect.Descriptor instead.
|
// Deprecated: Use PolicyResponse.ProtoReflect.Descriptor instead.
|
||||||
func (*PolicyResponse) Descriptor() ([]byte, []int) {
|
func (*PolicyResponse) Descriptor() ([]byte, []int) {
|
||||||
return file_wtclientrpc_wtclient_proto_rawDescGZIP(), []int{12}
|
return file_wtclientrpc_wtclient_proto_rawDescGZIP(), []int{13}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *PolicyResponse) GetMaxUpdates() uint32 {
|
func (x *PolicyResponse) GetMaxUpdates() uint32 {
|
||||||
@ -871,94 +970,113 @@ var file_wtclientrpc_wtclient_proto_rawDesc = []byte{
|
|||||||
0x73, 0x77, 0x65, 0x65, 0x70, 0x53, 0x61, 0x74, 0x50, 0x65, 0x72, 0x42, 0x79, 0x74, 0x65, 0x12,
|
0x73, 0x77, 0x65, 0x65, 0x70, 0x53, 0x61, 0x74, 0x50, 0x65, 0x72, 0x42, 0x79, 0x74, 0x65, 0x12,
|
||||||
0x2d, 0x0a, 0x13, 0x73, 0x77, 0x65, 0x65, 0x70, 0x5f, 0x73, 0x61, 0x74, 0x5f, 0x70, 0x65, 0x72,
|
0x2d, 0x0a, 0x13, 0x73, 0x77, 0x65, 0x65, 0x70, 0x5f, 0x73, 0x61, 0x74, 0x5f, 0x70, 0x65, 0x72,
|
||||||
0x5f, 0x76, 0x62, 0x79, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x73, 0x77,
|
0x5f, 0x76, 0x62, 0x79, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x73, 0x77,
|
||||||
0x65, 0x65, 0x70, 0x53, 0x61, 0x74, 0x50, 0x65, 0x72, 0x56, 0x62, 0x79, 0x74, 0x65, 0x22, 0xd1,
|
0x65, 0x65, 0x70, 0x53, 0x61, 0x74, 0x50, 0x65, 0x72, 0x56, 0x62, 0x79, 0x74, 0x65, 0x22, 0x9f,
|
||||||
0x01, 0x0a, 0x05, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b,
|
0x02, 0x0a, 0x05, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b,
|
||||||
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79,
|
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79,
|
||||||
0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20,
|
0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20,
|
||||||
0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x38,
|
0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x3c,
|
||||||
0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
|
0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
|
||||||
0x5f, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
|
0x5f, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
|
||||||
0x52, 0x16, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43,
|
0x42, 0x02, 0x18, 0x01, 0x52, 0x16, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x73, 0x73,
|
||||||
0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x5f,
|
0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0c,
|
||||||
0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b,
|
0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01,
|
||||||
0x6e, 0x75, 0x6d, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x73,
|
0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x53, 0x65, 0x73, 0x73, 0x69,
|
||||||
0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e,
|
0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x08, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
|
||||||
0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x6f, 0x77, 0x65,
|
0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
|
||||||
0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f,
|
0x72, 0x70, 0x63, 0x2e, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
|
||||||
0x6e, 0x73, 0x22, 0x3e, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x73,
|
0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40,
|
||||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75,
|
0x0a, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06,
|
||||||
0x64, 0x65, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
|
0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72,
|
||||||
0x08, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f,
|
0x70, 0x63, 0x2e, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49,
|
||||||
0x6e, 0x73, 0x22, 0x40, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x73,
|
0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
|
||||||
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x74, 0x6f, 0x77, 0x65,
|
0x22, 0xe0, 0x01, 0x0a, 0x10, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f,
|
||||||
0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69,
|
0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x38, 0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f,
|
||||||
0x65, 0x6e, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x06, 0x74, 0x6f,
|
0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74,
|
||||||
0x77, 0x65, 0x72, 0x73, 0x22, 0x0e, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71,
|
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53,
|
||||||
0x75, 0x65, 0x73, 0x74, 0x22, 0xf8, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65,
|
0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x12,
|
||||||
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x62, 0x61,
|
0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
|
||||||
0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6e, 0x75, 0x6d,
|
0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f,
|
||||||
0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6e, 0x75, 0x6d, 0x5f, 0x70,
|
0x6e, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03,
|
||||||
0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x02,
|
0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72,
|
||||||
0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67,
|
0x70, 0x63, 0x2e, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52,
|
||||||
0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x75, 0x6d, 0x5f, 0x66,
|
0x08, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x70, 0x6f, 0x6c,
|
||||||
0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x03, 0x20,
|
0x69, 0x63, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17,
|
||||||
0x01, 0x28, 0x0d, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x42, 0x61,
|
0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x6c,
|
||||||
0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x65, 0x73,
|
0x69, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54,
|
||||||
0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x04,
|
0x79, 0x70, 0x65, 0x22, 0x3e, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x77, 0x65, 0x72,
|
||||||
0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6e, 0x75, 0x6d, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
|
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c,
|
||||||
0x73, 0x41, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x6e, 0x75, 0x6d,
|
0x75, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01,
|
||||||
0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x65, 0x78, 0x68, 0x61, 0x75, 0x73,
|
0x28, 0x08, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69,
|
||||||
0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x53, 0x65,
|
0x6f, 0x6e, 0x73, 0x22, 0x40, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x77, 0x65, 0x72,
|
||||||
0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x78, 0x68, 0x61, 0x75, 0x73, 0x74, 0x65, 0x64, 0x22,
|
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x74, 0x6f, 0x77,
|
||||||
0x49, 0x0a, 0x0d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x77, 0x74, 0x63, 0x6c,
|
||||||
0x12, 0x38, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
|
0x69, 0x65, 0x6e, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x06, 0x74,
|
||||||
0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
|
0x6f, 0x77, 0x65, 0x72, 0x73, 0x22, 0x0e, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65,
|
||||||
0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a,
|
0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xf8, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52,
|
||||||
0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x0e, 0x50,
|
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x62,
|
||||||
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a,
|
0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6e, 0x75,
|
||||||
0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01,
|
0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6e, 0x75, 0x6d, 0x5f,
|
||||||
0x28, 0x0d, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2f,
|
0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18,
|
||||||
0x0a, 0x12, 0x73, 0x77, 0x65, 0x65, 0x70, 0x5f, 0x73, 0x61, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f,
|
0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e,
|
||||||
0x62, 0x79, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f,
|
0x67, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x75, 0x6d, 0x5f,
|
||||||
0x73, 0x77, 0x65, 0x65, 0x70, 0x53, 0x61, 0x74, 0x50, 0x65, 0x72, 0x42, 0x79, 0x74, 0x65, 0x12,
|
0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x03,
|
||||||
0x2d, 0x0a, 0x13, 0x73, 0x77, 0x65, 0x65, 0x70, 0x5f, 0x73, 0x61, 0x74, 0x5f, 0x70, 0x65, 0x72,
|
0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x42,
|
||||||
0x5f, 0x76, 0x62, 0x79, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x73, 0x77,
|
0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x65,
|
||||||
0x65, 0x65, 0x70, 0x53, 0x61, 0x74, 0x50, 0x65, 0x72, 0x56, 0x62, 0x79, 0x74, 0x65, 0x2a, 0x24,
|
0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18,
|
||||||
0x0a, 0x0a, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06,
|
0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6e, 0x75, 0x6d, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f,
|
||||||
0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4e, 0x43, 0x48,
|
0x6e, 0x73, 0x41, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x6e, 0x75,
|
||||||
0x4f, 0x52, 0x10, 0x01, 0x32, 0xc5, 0x03, 0x0a, 0x10, 0x57, 0x61, 0x74, 0x63, 0x68, 0x74, 0x6f,
|
0x6d, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x65, 0x78, 0x68, 0x61, 0x75,
|
||||||
0x77, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x08, 0x41, 0x64, 0x64,
|
0x73, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x53,
|
||||||
0x54, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
|
0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x78, 0x68, 0x61, 0x75, 0x73, 0x74, 0x65, 0x64,
|
||||||
0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
|
0x22, 0x49, 0x0a, 0x0d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||||
0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70,
|
0x74, 0x12, 0x38, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65,
|
||||||
0x63, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e,
|
||||||
0x73, 0x65, 0x12, 0x50, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x6f, 0x77, 0x65,
|
0x74, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52,
|
||||||
0x72, 0x12, 0x1f, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70, 0x63, 0x2e,
|
0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x0e,
|
||||||
0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
|
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f,
|
||||||
0x73, 0x74, 0x1a, 0x20, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70, 0x63,
|
0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20,
|
||||||
0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70,
|
0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12,
|
||||||
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x77, 0x65,
|
0x2f, 0x0a, 0x12, 0x73, 0x77, 0x65, 0x65, 0x70, 0x5f, 0x73, 0x61, 0x74, 0x5f, 0x70, 0x65, 0x72,
|
||||||
0x72, 0x73, 0x12, 0x1e, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70, 0x63,
|
0x5f, 0x62, 0x79, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52,
|
||||||
0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
|
0x0f, 0x73, 0x77, 0x65, 0x65, 0x70, 0x53, 0x61, 0x74, 0x50, 0x65, 0x72, 0x42, 0x79, 0x74, 0x65,
|
||||||
0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70, 0x63,
|
0x12, 0x2d, 0x0a, 0x13, 0x73, 0x77, 0x65, 0x65, 0x70, 0x5f, 0x73, 0x61, 0x74, 0x5f, 0x70, 0x65,
|
||||||
0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
0x72, 0x5f, 0x76, 0x62, 0x79, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x73,
|
||||||
0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x49,
|
0x77, 0x65, 0x65, 0x70, 0x53, 0x61, 0x74, 0x50, 0x65, 0x72, 0x56, 0x62, 0x79, 0x74, 0x65, 0x2a,
|
||||||
0x6e, 0x66, 0x6f, 0x12, 0x20, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70,
|
0x24, 0x0a, 0x0a, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a,
|
||||||
0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65,
|
0x06, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4e, 0x43,
|
||||||
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
|
0x48, 0x4f, 0x52, 0x10, 0x01, 0x32, 0xc5, 0x03, 0x0a, 0x10, 0x57, 0x61, 0x74, 0x63, 0x68, 0x74,
|
||||||
0x72, 0x70, 0x63, 0x2e, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x05, 0x53, 0x74, 0x61,
|
0x6f, 0x77, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x08, 0x41, 0x64,
|
||||||
0x74, 0x73, 0x12, 0x19, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70, 0x63,
|
0x64, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e,
|
||||||
0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e,
|
0x74, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71,
|
||||||
0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74,
|
0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72,
|
||||||
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x50, 0x6f, 0x6c,
|
0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
||||||
0x69, 0x63, 0x79, 0x12, 0x1a, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70,
|
0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x6f, 0x77,
|
||||||
0x63, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
0x65, 0x72, 0x12, 0x1f, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70, 0x63,
|
||||||
0x1b, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f,
|
0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
|
||||||
0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x33, 0x5a, 0x31,
|
0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70,
|
||||||
0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x67, 0x68, 0x74,
|
0x63, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73,
|
||||||
0x6e, 0x69, 0x6e, 0x67, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6e, 0x64, 0x2f,
|
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x77,
|
||||||
0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2f, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70,
|
0x65, 0x72, 0x73, 0x12, 0x1e, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70,
|
||||||
0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75,
|
||||||
|
0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70,
|
||||||
|
0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70,
|
||||||
|
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x77, 0x65, 0x72,
|
||||||
|
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72,
|
||||||
|
0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52,
|
||||||
|
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e,
|
||||||
|
0x74, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x05, 0x53, 0x74,
|
||||||
|
0x61, 0x74, 0x73, 0x12, 0x19, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70,
|
||||||
|
0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a,
|
||||||
|
0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61,
|
||||||
|
0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x50, 0x6f,
|
||||||
|
0x6c, 0x69, 0x63, 0x79, 0x12, 0x1a, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72,
|
||||||
|
0x70, 0x63, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||||
|
0x1a, 0x1b, 0x2e, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x50,
|
||||||
|
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x33, 0x5a,
|
||||||
|
0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x67, 0x68,
|
||||||
|
0x74, 0x6e, 0x69, 0x6e, 0x67, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6e, 0x64,
|
||||||
|
0x2f, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2f, 0x77, 0x74, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x72,
|
||||||
|
0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -974,7 +1092,7 @@ func file_wtclientrpc_wtclient_proto_rawDescGZIP() []byte {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var file_wtclientrpc_wtclient_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
var file_wtclientrpc_wtclient_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
||||||
var file_wtclientrpc_wtclient_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
|
var file_wtclientrpc_wtclient_proto_msgTypes = make([]protoimpl.MessageInfo, 14)
|
||||||
var file_wtclientrpc_wtclient_proto_goTypes = []interface{}{
|
var file_wtclientrpc_wtclient_proto_goTypes = []interface{}{
|
||||||
(PolicyType)(0), // 0: wtclientrpc.PolicyType
|
(PolicyType)(0), // 0: wtclientrpc.PolicyType
|
||||||
(*AddTowerRequest)(nil), // 1: wtclientrpc.AddTowerRequest
|
(*AddTowerRequest)(nil), // 1: wtclientrpc.AddTowerRequest
|
||||||
@ -984,34 +1102,38 @@ var file_wtclientrpc_wtclient_proto_goTypes = []interface{}{
|
|||||||
(*GetTowerInfoRequest)(nil), // 5: wtclientrpc.GetTowerInfoRequest
|
(*GetTowerInfoRequest)(nil), // 5: wtclientrpc.GetTowerInfoRequest
|
||||||
(*TowerSession)(nil), // 6: wtclientrpc.TowerSession
|
(*TowerSession)(nil), // 6: wtclientrpc.TowerSession
|
||||||
(*Tower)(nil), // 7: wtclientrpc.Tower
|
(*Tower)(nil), // 7: wtclientrpc.Tower
|
||||||
(*ListTowersRequest)(nil), // 8: wtclientrpc.ListTowersRequest
|
(*TowerSessionInfo)(nil), // 8: wtclientrpc.TowerSessionInfo
|
||||||
(*ListTowersResponse)(nil), // 9: wtclientrpc.ListTowersResponse
|
(*ListTowersRequest)(nil), // 9: wtclientrpc.ListTowersRequest
|
||||||
(*StatsRequest)(nil), // 10: wtclientrpc.StatsRequest
|
(*ListTowersResponse)(nil), // 10: wtclientrpc.ListTowersResponse
|
||||||
(*StatsResponse)(nil), // 11: wtclientrpc.StatsResponse
|
(*StatsRequest)(nil), // 11: wtclientrpc.StatsRequest
|
||||||
(*PolicyRequest)(nil), // 12: wtclientrpc.PolicyRequest
|
(*StatsResponse)(nil), // 12: wtclientrpc.StatsResponse
|
||||||
(*PolicyResponse)(nil), // 13: wtclientrpc.PolicyResponse
|
(*PolicyRequest)(nil), // 13: wtclientrpc.PolicyRequest
|
||||||
|
(*PolicyResponse)(nil), // 14: wtclientrpc.PolicyResponse
|
||||||
}
|
}
|
||||||
var file_wtclientrpc_wtclient_proto_depIdxs = []int32{
|
var file_wtclientrpc_wtclient_proto_depIdxs = []int32{
|
||||||
6, // 0: wtclientrpc.Tower.sessions:type_name -> wtclientrpc.TowerSession
|
6, // 0: wtclientrpc.Tower.sessions:type_name -> wtclientrpc.TowerSession
|
||||||
7, // 1: wtclientrpc.ListTowersResponse.towers:type_name -> wtclientrpc.Tower
|
8, // 1: wtclientrpc.Tower.session_info:type_name -> wtclientrpc.TowerSessionInfo
|
||||||
0, // 2: wtclientrpc.PolicyRequest.policy_type:type_name -> wtclientrpc.PolicyType
|
6, // 2: wtclientrpc.TowerSessionInfo.sessions:type_name -> wtclientrpc.TowerSession
|
||||||
1, // 3: wtclientrpc.WatchtowerClient.AddTower:input_type -> wtclientrpc.AddTowerRequest
|
0, // 3: wtclientrpc.TowerSessionInfo.policy_type:type_name -> wtclientrpc.PolicyType
|
||||||
3, // 4: wtclientrpc.WatchtowerClient.RemoveTower:input_type -> wtclientrpc.RemoveTowerRequest
|
7, // 4: wtclientrpc.ListTowersResponse.towers:type_name -> wtclientrpc.Tower
|
||||||
8, // 5: wtclientrpc.WatchtowerClient.ListTowers:input_type -> wtclientrpc.ListTowersRequest
|
0, // 5: wtclientrpc.PolicyRequest.policy_type:type_name -> wtclientrpc.PolicyType
|
||||||
5, // 6: wtclientrpc.WatchtowerClient.GetTowerInfo:input_type -> wtclientrpc.GetTowerInfoRequest
|
1, // 6: wtclientrpc.WatchtowerClient.AddTower:input_type -> wtclientrpc.AddTowerRequest
|
||||||
10, // 7: wtclientrpc.WatchtowerClient.Stats:input_type -> wtclientrpc.StatsRequest
|
3, // 7: wtclientrpc.WatchtowerClient.RemoveTower:input_type -> wtclientrpc.RemoveTowerRequest
|
||||||
12, // 8: wtclientrpc.WatchtowerClient.Policy:input_type -> wtclientrpc.PolicyRequest
|
9, // 8: wtclientrpc.WatchtowerClient.ListTowers:input_type -> wtclientrpc.ListTowersRequest
|
||||||
2, // 9: wtclientrpc.WatchtowerClient.AddTower:output_type -> wtclientrpc.AddTowerResponse
|
5, // 9: wtclientrpc.WatchtowerClient.GetTowerInfo:input_type -> wtclientrpc.GetTowerInfoRequest
|
||||||
4, // 10: wtclientrpc.WatchtowerClient.RemoveTower:output_type -> wtclientrpc.RemoveTowerResponse
|
11, // 10: wtclientrpc.WatchtowerClient.Stats:input_type -> wtclientrpc.StatsRequest
|
||||||
9, // 11: wtclientrpc.WatchtowerClient.ListTowers:output_type -> wtclientrpc.ListTowersResponse
|
13, // 11: wtclientrpc.WatchtowerClient.Policy:input_type -> wtclientrpc.PolicyRequest
|
||||||
7, // 12: wtclientrpc.WatchtowerClient.GetTowerInfo:output_type -> wtclientrpc.Tower
|
2, // 12: wtclientrpc.WatchtowerClient.AddTower:output_type -> wtclientrpc.AddTowerResponse
|
||||||
11, // 13: wtclientrpc.WatchtowerClient.Stats:output_type -> wtclientrpc.StatsResponse
|
4, // 13: wtclientrpc.WatchtowerClient.RemoveTower:output_type -> wtclientrpc.RemoveTowerResponse
|
||||||
13, // 14: wtclientrpc.WatchtowerClient.Policy:output_type -> wtclientrpc.PolicyResponse
|
10, // 14: wtclientrpc.WatchtowerClient.ListTowers:output_type -> wtclientrpc.ListTowersResponse
|
||||||
9, // [9:15] is the sub-list for method output_type
|
7, // 15: wtclientrpc.WatchtowerClient.GetTowerInfo:output_type -> wtclientrpc.Tower
|
||||||
3, // [3:9] is the sub-list for method input_type
|
12, // 16: wtclientrpc.WatchtowerClient.Stats:output_type -> wtclientrpc.StatsResponse
|
||||||
3, // [3:3] is the sub-list for extension type_name
|
14, // 17: wtclientrpc.WatchtowerClient.Policy:output_type -> wtclientrpc.PolicyResponse
|
||||||
3, // [3:3] is the sub-list for extension extendee
|
12, // [12:18] is the sub-list for method output_type
|
||||||
0, // [0:3] is the sub-list for field type_name
|
6, // [6:12] is the sub-list for method input_type
|
||||||
|
6, // [6:6] is the sub-list for extension type_name
|
||||||
|
6, // [6:6] is the sub-list for extension extendee
|
||||||
|
0, // [0:6] is the sub-list for field type_name
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_wtclientrpc_wtclient_proto_init() }
|
func init() { file_wtclientrpc_wtclient_proto_init() }
|
||||||
@ -1105,7 +1227,7 @@ func file_wtclientrpc_wtclient_proto_init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_wtclientrpc_wtclient_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
|
file_wtclientrpc_wtclient_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*ListTowersRequest); i {
|
switch v := v.(*TowerSessionInfo); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
case 1:
|
case 1:
|
||||||
@ -1117,7 +1239,7 @@ func file_wtclientrpc_wtclient_proto_init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_wtclientrpc_wtclient_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
|
file_wtclientrpc_wtclient_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*ListTowersResponse); i {
|
switch v := v.(*ListTowersRequest); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
case 1:
|
case 1:
|
||||||
@ -1129,7 +1251,7 @@ func file_wtclientrpc_wtclient_proto_init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_wtclientrpc_wtclient_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
|
file_wtclientrpc_wtclient_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*StatsRequest); i {
|
switch v := v.(*ListTowersResponse); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
case 1:
|
case 1:
|
||||||
@ -1141,7 +1263,7 @@ func file_wtclientrpc_wtclient_proto_init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_wtclientrpc_wtclient_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
|
file_wtclientrpc_wtclient_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*StatsResponse); i {
|
switch v := v.(*StatsRequest); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
case 1:
|
case 1:
|
||||||
@ -1153,7 +1275,7 @@ func file_wtclientrpc_wtclient_proto_init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_wtclientrpc_wtclient_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
|
file_wtclientrpc_wtclient_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*PolicyRequest); i {
|
switch v := v.(*StatsResponse); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
case 1:
|
case 1:
|
||||||
@ -1165,6 +1287,18 @@ func file_wtclientrpc_wtclient_proto_init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_wtclientrpc_wtclient_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
|
file_wtclientrpc_wtclient_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*PolicyRequest); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_wtclientrpc_wtclient_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*PolicyResponse); i {
|
switch v := v.(*PolicyResponse); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
@ -1183,7 +1317,7 @@ func file_wtclientrpc_wtclient_proto_init() {
|
|||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: file_wtclientrpc_wtclient_proto_rawDesc,
|
RawDescriptor: file_wtclientrpc_wtclient_proto_rawDesc,
|
||||||
NumEnums: 1,
|
NumEnums: 1,
|
||||||
NumMessages: 13,
|
NumMessages: 14,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 1,
|
NumServices: 1,
|
||||||
},
|
},
|
||||||
|
@ -107,14 +107,37 @@ message Tower {
|
|||||||
// The list of addresses the watchtower is reachable over.
|
// The list of addresses the watchtower is reachable over.
|
||||||
repeated string addresses = 2;
|
repeated string addresses = 2;
|
||||||
|
|
||||||
|
// Deprecated, use the active_session_candidate field under the
|
||||||
|
// correct identifier in the client_type map.
|
||||||
// Whether the watchtower is currently a candidate for new sessions.
|
// Whether the watchtower is currently a candidate for new sessions.
|
||||||
bool active_session_candidate = 3;
|
bool active_session_candidate = 3 [deprecated = true];
|
||||||
|
|
||||||
|
// Deprecated, use the num_sessions field under the correct identifier
|
||||||
|
// in the client_type map.
|
||||||
|
// The number of sessions that have been negotiated with the watchtower.
|
||||||
|
uint32 num_sessions = 4 [deprecated = true];
|
||||||
|
|
||||||
|
// Deprecated, use the sessions field under the correct identifier in the
|
||||||
|
// client_type map.
|
||||||
|
// The list of sessions that have been negotiated with the watchtower.
|
||||||
|
repeated TowerSession sessions = 5 [deprecated = true];
|
||||||
|
|
||||||
|
// A list sessions held with the tower.
|
||||||
|
repeated TowerSessionInfo session_info = 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
message TowerSessionInfo {
|
||||||
|
// Whether the watchtower is currently a candidate for new sessions.
|
||||||
|
bool active_session_candidate = 1;
|
||||||
|
|
||||||
// The number of sessions that have been negotiated with the watchtower.
|
// The number of sessions that have been negotiated with the watchtower.
|
||||||
uint32 num_sessions = 4;
|
uint32 num_sessions = 2;
|
||||||
|
|
||||||
// The list of sessions that have been negotiated with the watchtower.
|
// The list of sessions that have been negotiated with the watchtower.
|
||||||
repeated TowerSession sessions = 5;
|
repeated TowerSession sessions = 3;
|
||||||
|
|
||||||
|
// The session's policy type.
|
||||||
|
PolicyType policy_type = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ListTowersRequest {
|
message ListTowersRequest {
|
||||||
|
@ -359,19 +359,26 @@
|
|||||||
},
|
},
|
||||||
"active_session_candidate": {
|
"active_session_candidate": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"description": "Whether the watchtower is currently a candidate for new sessions."
|
"description": "Deprecated, use the active_session_candidate field under the\ncorrect identifier in the client_type map.\nWhether the watchtower is currently a candidate for new sessions."
|
||||||
},
|
},
|
||||||
"num_sessions": {
|
"num_sessions": {
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"format": "int64",
|
"format": "int64",
|
||||||
"description": "The number of sessions that have been negotiated with the watchtower."
|
"description": "Deprecated, use the num_sessions field under the correct identifier\nin the client_type map.\nThe number of sessions that have been negotiated with the watchtower."
|
||||||
},
|
},
|
||||||
"sessions": {
|
"sessions": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/wtclientrpcTowerSession"
|
"$ref": "#/definitions/wtclientrpcTowerSession"
|
||||||
},
|
},
|
||||||
"description": "The list of sessions that have been negotiated with the watchtower."
|
"description": "Deprecated, use the sessions field under the correct identifier in the\nclient_type map.\nThe list of sessions that have been negotiated with the watchtower."
|
||||||
|
},
|
||||||
|
"session_info": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/wtclientrpcTowerSessionInfo"
|
||||||
|
},
|
||||||
|
"description": "A list sessions held with the tower."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -404,6 +411,31 @@
|
|||||||
"description": "The fee rate, in satoshis per vbyte, that will be used by the watchtower for\nthe justice transaction in the event of a channel breach."
|
"description": "The fee rate, in satoshis per vbyte, that will be used by the watchtower for\nthe justice transaction in the event of a channel breach."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"wtclientrpcTowerSessionInfo": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"active_session_candidate": {
|
||||||
|
"type": "boolean",
|
||||||
|
"description": "Whether the watchtower is currently a candidate for new sessions."
|
||||||
|
},
|
||||||
|
"num_sessions": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64",
|
||||||
|
"description": "The number of sessions that have been negotiated with the watchtower."
|
||||||
|
},
|
||||||
|
"sessions": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/wtclientrpcTowerSession"
|
||||||
|
},
|
||||||
|
"description": "The list of sessions that have been negotiated with the watchtower."
|
||||||
|
},
|
||||||
|
"policy_type": {
|
||||||
|
"$ref": "#/definitions/wtclientrpcPolicyType",
|
||||||
|
"description": "The session's policy type."
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user