multinode/payouts: satellite period/allTime summaries added
payout summaries for specific satellite period/allTime added Change-Id: I144138304f01f23d5c4b10931988eaaced656aaf
This commit is contained in:
parent
dfe85beac2
commit
f2812d76cd
@ -58,22 +58,28 @@ func (controller *Payouts) SatelliteEstimations(w http.ResponseWriter, r *http.R
|
|||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
var err error
|
var err error
|
||||||
defer mon.Task()(&ctx)(&err)
|
defer mon.Task()(&ctx)(&err)
|
||||||
|
|
||||||
|
w.Header().Add("Content-Type", "application/json")
|
||||||
segmentParams := mux.Vars(r)
|
segmentParams := mux.Vars(r)
|
||||||
|
|
||||||
id, ok := segmentParams["satelliteID"]
|
id, ok := segmentParams["satelliteID"]
|
||||||
if !ok {
|
if !ok {
|
||||||
controller.serveError(w, http.StatusBadRequest, ErrPayouts.Wrap(err))
|
controller.serveError(w, http.StatusBadRequest, ErrPayouts.New("couldn't receive route variable satelliteID"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
satelliteID, err := storj.NodeIDFromString(id)
|
satelliteID, err := storj.NodeIDFromString(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
controller.serveError(w, http.StatusBadRequest, ErrPayouts.Wrap(err))
|
controller.serveError(w, http.StatusBadRequest, ErrPayouts.Wrap(err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
estimatedEarnings, err := controller.service.AllNodesSatelliteEstimations(ctx, satelliteID)
|
|
||||||
|
estimatedEarnings, err := controller.service.NodesSatelliteEstimations(ctx, satelliteID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
controller.serveError(w, http.StatusInternalServerError, ErrPayouts.Wrap(err))
|
controller.serveError(w, http.StatusInternalServerError, ErrPayouts.Wrap(err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = json.NewEncoder(w).Encode(estimatedEarnings); err != nil {
|
if err = json.NewEncoder(w).Encode(estimatedEarnings); err != nil {
|
||||||
controller.log.Error("failed to write json response", zap.Error(err))
|
controller.log.Error("failed to write json response", zap.Error(err))
|
||||||
return
|
return
|
||||||
@ -85,11 +91,15 @@ func (controller *Payouts) Estimations(w http.ResponseWriter, r *http.Request) {
|
|||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
var err error
|
var err error
|
||||||
defer mon.Task()(&ctx)(&err)
|
defer mon.Task()(&ctx)(&err)
|
||||||
estimatedEarnings, err := controller.service.AllNodesEstimations(ctx)
|
|
||||||
|
w.Header().Add("Content-Type", "application/json")
|
||||||
|
|
||||||
|
estimatedEarnings, err := controller.service.NodesEstimations(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
controller.serveError(w, http.StatusInternalServerError, ErrPayouts.Wrap(err))
|
controller.serveError(w, http.StatusInternalServerError, ErrPayouts.Wrap(err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = json.NewEncoder(w).Encode(estimatedEarnings); err != nil {
|
if err = json.NewEncoder(w).Encode(estimatedEarnings); err != nil {
|
||||||
controller.log.Error("failed to write json response", zap.Error(err))
|
controller.log.Error("failed to write json response", zap.Error(err))
|
||||||
return
|
return
|
||||||
@ -102,12 +112,12 @@ func (controller *Payouts) PeriodSummary(w http.ResponseWriter, r *http.Request)
|
|||||||
var err error
|
var err error
|
||||||
defer mon.Task()(&ctx)(&err)
|
defer mon.Task()(&ctx)(&err)
|
||||||
|
|
||||||
segmentParams := mux.Vars(r)
|
|
||||||
w.Header().Add("Content-Type", "application/json")
|
w.Header().Add("Content-Type", "application/json")
|
||||||
|
segmentParams := mux.Vars(r)
|
||||||
|
|
||||||
period, ok := segmentParams["period"]
|
period, ok := segmentParams["period"]
|
||||||
if !ok {
|
if !ok {
|
||||||
controller.serveError(w, http.StatusBadRequest, ErrPayouts.Wrap(err))
|
controller.serveError(w, http.StatusBadRequest, ErrPayouts.New("couldn't receive route variable period"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,6 +153,78 @@ func (controller *Payouts) Summary(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SatellitePeriodSummary handles retrieval from nodes from specific satellite for specific period.
|
||||||
|
func (controller *Payouts) SatellitePeriodSummary(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
var err error
|
||||||
|
defer mon.Task()(&ctx)(&err)
|
||||||
|
|
||||||
|
w.Header().Add("Content-Type", "application/json")
|
||||||
|
segmentParams := mux.Vars(r)
|
||||||
|
|
||||||
|
period, ok := segmentParams["period"]
|
||||||
|
if !ok {
|
||||||
|
controller.serveError(w, http.StatusBadRequest, ErrPayouts.New("couldn't receive route variable period"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
id, ok := segmentParams["id"]
|
||||||
|
if !ok {
|
||||||
|
controller.serveError(w, http.StatusBadRequest, ErrPayouts.New("couldn't receive route variable satelliteID"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
satelliteID, err := storj.NodeIDFromString(id)
|
||||||
|
if err != nil {
|
||||||
|
controller.serveError(w, http.StatusBadRequest, ErrPayouts.Wrap(err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
summary, err := controller.service.NodesSatellitePeriodSummary(ctx, satelliteID, period)
|
||||||
|
if err != nil {
|
||||||
|
controller.serveError(w, http.StatusInternalServerError, ErrPayouts.Wrap(err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = json.NewEncoder(w).Encode(summary); err != nil {
|
||||||
|
controller.log.Error("failed to write json response", zap.Error(err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SatelliteSummary handles retrieval from nodes from specific satellite.
|
||||||
|
func (controller *Payouts) SatelliteSummary(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
var err error
|
||||||
|
defer mon.Task()(&ctx)(&err)
|
||||||
|
|
||||||
|
w.Header().Add("Content-Type", "application/json")
|
||||||
|
segmentParams := mux.Vars(r)
|
||||||
|
|
||||||
|
id, ok := segmentParams["id"]
|
||||||
|
if !ok {
|
||||||
|
controller.serveError(w, http.StatusBadRequest, ErrPayouts.New("couldn't receive route variable satelliteID"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
satelliteID, err := storj.NodeIDFromString(id)
|
||||||
|
if err != nil {
|
||||||
|
controller.serveError(w, http.StatusBadRequest, ErrPayouts.Wrap(err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
summary, err := controller.service.NodesSatelliteSummary(ctx, satelliteID)
|
||||||
|
if err != nil {
|
||||||
|
controller.serveError(w, http.StatusInternalServerError, ErrPayouts.Wrap(err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = json.NewEncoder(w).Encode(summary); err != nil {
|
||||||
|
controller.log.Error("failed to write json response", zap.Error(err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// serveError set http statuses and send json error.
|
// serveError set http statuses and send json error.
|
||||||
func (controller *Payouts) serveError(w http.ResponseWriter, status int, err error) {
|
func (controller *Payouts) serveError(w http.ResponseWriter, status int, err error) {
|
||||||
w.WriteHeader(status)
|
w.WriteHeader(status)
|
||||||
|
@ -75,6 +75,8 @@ func NewServer(log *zap.Logger, config Config, nodes *nodes.Service, payouts *pa
|
|||||||
|
|
||||||
payoutsController := controllers.NewPayouts(server.log, server.payouts)
|
payoutsController := controllers.NewPayouts(server.log, server.payouts)
|
||||||
payoutsRouter := apiRouter.PathPrefix("/payouts").Subrouter()
|
payoutsRouter := apiRouter.PathPrefix("/payouts").Subrouter()
|
||||||
|
payoutsRouter.HandleFunc("/satellite/{id}/summary/{period}", payoutsController.SatellitePeriodSummary).Methods(http.MethodGet)
|
||||||
|
payoutsRouter.HandleFunc("/satellite/{id}/summary", payoutsController.SatelliteSummary).Methods(http.MethodGet)
|
||||||
payoutsRouter.HandleFunc("/summary/{period}", payoutsController.PeriodSummary).Methods(http.MethodGet)
|
payoutsRouter.HandleFunc("/summary/{period}", payoutsController.PeriodSummary).Methods(http.MethodGet)
|
||||||
payoutsRouter.HandleFunc("/summary", payoutsController.Summary).Methods(http.MethodGet)
|
payoutsRouter.HandleFunc("/summary", payoutsController.Summary).Methods(http.MethodGet)
|
||||||
payoutsRouter.HandleFunc("/total-earned", payoutsController.GetAllNodesTotalEarned).Methods(http.MethodGet)
|
payoutsRouter.HandleFunc("/total-earned", payoutsController.GetAllNodesTotalEarned).Methods(http.MethodGet)
|
||||||
|
@ -16,6 +16,7 @@ type SatelliteSummary struct {
|
|||||||
// NodeSummary contains node's payout information.
|
// NodeSummary contains node's payout information.
|
||||||
type NodeSummary struct {
|
type NodeSummary struct {
|
||||||
NodeID storj.NodeID `json:"nodeId"`
|
NodeID storj.NodeID `json:"nodeId"`
|
||||||
|
NodeName string `json:"nodeName"`
|
||||||
Held int64 `json:"held"`
|
Held int64 `json:"held"`
|
||||||
Paid int64 `json:"paid"`
|
Paid int64 `json:"paid"`
|
||||||
}
|
}
|
||||||
@ -27,3 +28,16 @@ type Summary struct {
|
|||||||
TotalPaid int64 `json:"totalPaid"`
|
TotalPaid int64 `json:"totalPaid"`
|
||||||
NodeSummary []NodeSummary `json:"nodeSummary"`
|
NodeSummary []NodeSummary `json:"nodeSummary"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add appends node payout data to summary.
|
||||||
|
func (summary *Summary) Add(held, paid int64, id storj.NodeID, name string) {
|
||||||
|
summary.TotalPaid += paid
|
||||||
|
summary.TotalHeld += held
|
||||||
|
summary.TotalEarned += paid + held
|
||||||
|
summary.NodeSummary = append(summary.NodeSummary, NodeSummary{
|
||||||
|
NodeID: id,
|
||||||
|
Held: held,
|
||||||
|
Paid: paid,
|
||||||
|
NodeName: name,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@ -129,17 +129,9 @@ func (service *Service) NodesSummary(ctx context.Context) (_ Summary, err error)
|
|||||||
return Summary{}, Error.Wrap(err)
|
return Summary{}, Error.Wrap(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
summary.TotalPaid += info.Paid
|
summary.Add(info.Held, info.Paid, node.ID, node.Name)
|
||||||
summary.TotalHeld += info.Held
|
|
||||||
summary.NodeSummary = append(summary.NodeSummary, NodeSummary{
|
|
||||||
NodeID: node.ID,
|
|
||||||
Held: info.Held,
|
|
||||||
Paid: info.Paid,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
summary.TotalEarned = summary.TotalPaid + summary.TotalHeld
|
|
||||||
|
|
||||||
return summary, nil
|
return summary, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,20 +152,110 @@ func (service *Service) NodesPeriodSummary(ctx context.Context, period string) (
|
|||||||
return Summary{}, Error.Wrap(err)
|
return Summary{}, Error.Wrap(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
summary.TotalPaid += info.Paid
|
summary.Add(info.Held, info.Paid, node.ID, node.Name)
|
||||||
summary.TotalHeld += info.Held
|
|
||||||
summary.NodeSummary = append(summary.NodeSummary, NodeSummary{
|
|
||||||
NodeID: node.ID,
|
|
||||||
Held: info.Held,
|
|
||||||
Paid: info.Paid,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
summary.TotalEarned = summary.TotalPaid + summary.TotalHeld
|
return summary, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// NodesSatelliteSummary returns specific satellite all time stats.
|
||||||
|
func (service *Service) NodesSatelliteSummary(ctx context.Context, satelliteID storj.NodeID) (_ Summary, err error) {
|
||||||
|
defer mon.Task()(&ctx)(&err)
|
||||||
|
var summary Summary
|
||||||
|
|
||||||
|
list, err := service.nodes.List(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return Summary{}, Error.Wrap(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, node := range list {
|
||||||
|
info, err := service.nodeSatelliteSummary(ctx, node, satelliteID)
|
||||||
|
if err != nil {
|
||||||
|
return Summary{}, Error.Wrap(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
summary.Add(info.Held, info.Paid, node.ID, node.Name)
|
||||||
|
}
|
||||||
|
|
||||||
return summary, nil
|
return summary, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NodesSatellitePeriodSummary returns specific satellite stats for specific period.
|
||||||
|
func (service *Service) NodesSatellitePeriodSummary(ctx context.Context, satelliteID storj.NodeID, period string) (_ Summary, err error) {
|
||||||
|
defer mon.Task()(&ctx)(&err)
|
||||||
|
var summary Summary
|
||||||
|
|
||||||
|
list, err := service.nodes.List(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return Summary{}, Error.Wrap(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, node := range list {
|
||||||
|
info, err := service.nodeSatellitePeriodSummary(ctx, node, satelliteID, period)
|
||||||
|
if err != nil {
|
||||||
|
return Summary{}, Error.Wrap(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
summary.Add(info.Held, info.Paid, node.ID, node.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
return summary, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// nodeSatelliteSummary returns payout info for single satellite, for specific node.
|
||||||
|
func (service *Service) nodeSatelliteSummary(ctx context.Context, node nodes.Node, satelliteID storj.NodeID) (info *multinodepb.PayoutInfo, err error) {
|
||||||
|
conn, err := service.dialer.DialNodeURL(ctx, storj.NodeURL{
|
||||||
|
ID: node.ID,
|
||||||
|
Address: node.PublicAddress,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return &multinodepb.PayoutInfo{}, Error.Wrap(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
err = errs.Combine(err, conn.Close())
|
||||||
|
}()
|
||||||
|
|
||||||
|
payoutClient := multinodepb.NewDRPCPayoutClient(conn)
|
||||||
|
header := &multinodepb.RequestHeader{
|
||||||
|
ApiKey: node.APISecret,
|
||||||
|
}
|
||||||
|
|
||||||
|
response, err := payoutClient.SatelliteSummary(ctx, &multinodepb.SatelliteSummaryRequest{Header: header, SatelliteId: satelliteID})
|
||||||
|
if err != nil {
|
||||||
|
return &multinodepb.PayoutInfo{}, Error.Wrap(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return response.PayoutInfo, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// nodeSatellitePeriodSummary returns satellite payout info for specific node for specific period.
|
||||||
|
func (service *Service) nodeSatellitePeriodSummary(ctx context.Context, node nodes.Node, satelliteID storj.NodeID, period string) (info *multinodepb.PayoutInfo, err error) {
|
||||||
|
conn, err := service.dialer.DialNodeURL(ctx, storj.NodeURL{
|
||||||
|
ID: node.ID,
|
||||||
|
Address: node.PublicAddress,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return &multinodepb.PayoutInfo{}, Error.Wrap(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
err = errs.Combine(err, conn.Close())
|
||||||
|
}()
|
||||||
|
|
||||||
|
payoutClient := multinodepb.NewDRPCPayoutClient(conn)
|
||||||
|
header := &multinodepb.RequestHeader{
|
||||||
|
ApiKey: node.APISecret,
|
||||||
|
}
|
||||||
|
|
||||||
|
response, err := payoutClient.SatellitePeriodSummary(ctx, &multinodepb.SatellitePeriodSummaryRequest{Header: header, SatelliteId: satelliteID, Period: period})
|
||||||
|
if err != nil {
|
||||||
|
return &multinodepb.PayoutInfo{}, Error.Wrap(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return response.PayoutInfo, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (service *Service) getAllSatellitesPeriod(ctx context.Context, node nodes.Node, period string) (info *multinodepb.PayoutInfo, err error) {
|
func (service *Service) getAllSatellitesPeriod(ctx context.Context, node nodes.Node, period string) (info *multinodepb.PayoutInfo, err error) {
|
||||||
conn, err := service.dialer.DialNodeURL(ctx, storj.NodeURL{
|
conn, err := service.dialer.DialNodeURL(ctx, storj.NodeURL{
|
||||||
ID: node.ID,
|
ID: node.ID,
|
||||||
@ -226,8 +308,8 @@ func (service *Service) getAllSatellitesAllTime(ctx context.Context, node nodes.
|
|||||||
return response.PayoutInfo, nil
|
return response.PayoutInfo, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// AllNodesSatelliteEstimations returns specific satellite all time estimated earnings.
|
// NodesSatelliteEstimations returns specific satellite all time estimated earnings.
|
||||||
func (service *Service) AllNodesSatelliteEstimations(ctx context.Context, satelliteID storj.NodeID) (_ int64, err error) {
|
func (service *Service) NodesSatelliteEstimations(ctx context.Context, satelliteID storj.NodeID) (_ int64, err error) {
|
||||||
defer mon.Task()(&ctx)(&err)
|
defer mon.Task()(&ctx)(&err)
|
||||||
|
|
||||||
var estimatedEarnings int64
|
var estimatedEarnings int64
|
||||||
@ -249,8 +331,8 @@ func (service *Service) AllNodesSatelliteEstimations(ctx context.Context, satell
|
|||||||
return estimatedEarnings, nil
|
return estimatedEarnings, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// AllNodesEstimations returns all satellites all time estimated earnings.
|
// NodesEstimations returns all satellites all time estimated earnings.
|
||||||
func (service *Service) AllNodesEstimations(ctx context.Context) (_ int64, err error) {
|
func (service *Service) NodesEstimations(ctx context.Context) (_ int64, err error) {
|
||||||
defer mon.Task()(&ctx)(&err)
|
defer mon.Task()(&ctx)(&err)
|
||||||
|
|
||||||
var estimatedEarnings int64
|
var estimatedEarnings int64
|
||||||
|
@ -1002,6 +1002,168 @@ func (m *AllSatellitesPeriodSummaryResponse) GetPayoutInfo() *PayoutInfo {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SatelliteSummaryRequest struct {
|
||||||
|
Header *RequestHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
|
||||||
|
SatelliteId NodeID `protobuf:"bytes,2,opt,name=satellite_id,json=satelliteId,proto3,customtype=NodeID" json:"satellite_id"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SatelliteSummaryRequest) Reset() { *m = SatelliteSummaryRequest{} }
|
||||||
|
func (m *SatelliteSummaryRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SatelliteSummaryRequest) ProtoMessage() {}
|
||||||
|
func (*SatelliteSummaryRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor_9a45fd79b06f3a1b, []int{21}
|
||||||
|
}
|
||||||
|
func (m *SatelliteSummaryRequest) XXX_Unmarshal(b []byte) error {
|
||||||
|
return xxx_messageInfo_SatelliteSummaryRequest.Unmarshal(m, b)
|
||||||
|
}
|
||||||
|
func (m *SatelliteSummaryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
return xxx_messageInfo_SatelliteSummaryRequest.Marshal(b, m, deterministic)
|
||||||
|
}
|
||||||
|
func (m *SatelliteSummaryRequest) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_SatelliteSummaryRequest.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *SatelliteSummaryRequest) XXX_Size() int {
|
||||||
|
return xxx_messageInfo_SatelliteSummaryRequest.Size(m)
|
||||||
|
}
|
||||||
|
func (m *SatelliteSummaryRequest) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_SatelliteSummaryRequest.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_SatelliteSummaryRequest proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *SatelliteSummaryRequest) GetHeader() *RequestHeader {
|
||||||
|
if m != nil {
|
||||||
|
return m.Header
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type SatelliteSummaryResponse struct {
|
||||||
|
PayoutInfo *PayoutInfo `protobuf:"bytes,1,opt,name=payout_info,json=payoutInfo,proto3" json:"payout_info,omitempty"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SatelliteSummaryResponse) Reset() { *m = SatelliteSummaryResponse{} }
|
||||||
|
func (m *SatelliteSummaryResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SatelliteSummaryResponse) ProtoMessage() {}
|
||||||
|
func (*SatelliteSummaryResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor_9a45fd79b06f3a1b, []int{22}
|
||||||
|
}
|
||||||
|
func (m *SatelliteSummaryResponse) XXX_Unmarshal(b []byte) error {
|
||||||
|
return xxx_messageInfo_SatelliteSummaryResponse.Unmarshal(m, b)
|
||||||
|
}
|
||||||
|
func (m *SatelliteSummaryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
return xxx_messageInfo_SatelliteSummaryResponse.Marshal(b, m, deterministic)
|
||||||
|
}
|
||||||
|
func (m *SatelliteSummaryResponse) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_SatelliteSummaryResponse.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *SatelliteSummaryResponse) XXX_Size() int {
|
||||||
|
return xxx_messageInfo_SatelliteSummaryResponse.Size(m)
|
||||||
|
}
|
||||||
|
func (m *SatelliteSummaryResponse) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_SatelliteSummaryResponse.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_SatelliteSummaryResponse proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *SatelliteSummaryResponse) GetPayoutInfo() *PayoutInfo {
|
||||||
|
if m != nil {
|
||||||
|
return m.PayoutInfo
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type SatellitePeriodSummaryRequest struct {
|
||||||
|
Header *RequestHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
|
||||||
|
SatelliteId NodeID `protobuf:"bytes,2,opt,name=satellite_id,json=satelliteId,proto3,customtype=NodeID" json:"satellite_id"`
|
||||||
|
Period string `protobuf:"bytes,3,opt,name=period,proto3" json:"period,omitempty"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SatellitePeriodSummaryRequest) Reset() { *m = SatellitePeriodSummaryRequest{} }
|
||||||
|
func (m *SatellitePeriodSummaryRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SatellitePeriodSummaryRequest) ProtoMessage() {}
|
||||||
|
func (*SatellitePeriodSummaryRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor_9a45fd79b06f3a1b, []int{23}
|
||||||
|
}
|
||||||
|
func (m *SatellitePeriodSummaryRequest) XXX_Unmarshal(b []byte) error {
|
||||||
|
return xxx_messageInfo_SatellitePeriodSummaryRequest.Unmarshal(m, b)
|
||||||
|
}
|
||||||
|
func (m *SatellitePeriodSummaryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
return xxx_messageInfo_SatellitePeriodSummaryRequest.Marshal(b, m, deterministic)
|
||||||
|
}
|
||||||
|
func (m *SatellitePeriodSummaryRequest) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_SatellitePeriodSummaryRequest.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *SatellitePeriodSummaryRequest) XXX_Size() int {
|
||||||
|
return xxx_messageInfo_SatellitePeriodSummaryRequest.Size(m)
|
||||||
|
}
|
||||||
|
func (m *SatellitePeriodSummaryRequest) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_SatellitePeriodSummaryRequest.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_SatellitePeriodSummaryRequest proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *SatellitePeriodSummaryRequest) GetHeader() *RequestHeader {
|
||||||
|
if m != nil {
|
||||||
|
return m.Header
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SatellitePeriodSummaryRequest) GetPeriod() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Period
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type SatellitePeriodSummaryResponse struct {
|
||||||
|
PayoutInfo *PayoutInfo `protobuf:"bytes,1,opt,name=payout_info,json=payoutInfo,proto3" json:"payout_info,omitempty"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SatellitePeriodSummaryResponse) Reset() { *m = SatellitePeriodSummaryResponse{} }
|
||||||
|
func (m *SatellitePeriodSummaryResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SatellitePeriodSummaryResponse) ProtoMessage() {}
|
||||||
|
func (*SatellitePeriodSummaryResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor_9a45fd79b06f3a1b, []int{24}
|
||||||
|
}
|
||||||
|
func (m *SatellitePeriodSummaryResponse) XXX_Unmarshal(b []byte) error {
|
||||||
|
return xxx_messageInfo_SatellitePeriodSummaryResponse.Unmarshal(m, b)
|
||||||
|
}
|
||||||
|
func (m *SatellitePeriodSummaryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
return xxx_messageInfo_SatellitePeriodSummaryResponse.Marshal(b, m, deterministic)
|
||||||
|
}
|
||||||
|
func (m *SatellitePeriodSummaryResponse) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_SatellitePeriodSummaryResponse.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *SatellitePeriodSummaryResponse) XXX_Size() int {
|
||||||
|
return xxx_messageInfo_SatellitePeriodSummaryResponse.Size(m)
|
||||||
|
}
|
||||||
|
func (m *SatellitePeriodSummaryResponse) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_SatellitePeriodSummaryResponse.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_SatellitePeriodSummaryResponse proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *SatellitePeriodSummaryResponse) GetPayoutInfo() *PayoutInfo {
|
||||||
|
if m != nil {
|
||||||
|
return m.PayoutInfo
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
type EarnedRequest struct {
|
type EarnedRequest struct {
|
||||||
Header *RequestHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
|
Header *RequestHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
@ -1013,7 +1175,7 @@ func (m *EarnedRequest) Reset() { *m = EarnedRequest{} }
|
|||||||
func (m *EarnedRequest) String() string { return proto.CompactTextString(m) }
|
func (m *EarnedRequest) String() string { return proto.CompactTextString(m) }
|
||||||
func (*EarnedRequest) ProtoMessage() {}
|
func (*EarnedRequest) ProtoMessage() {}
|
||||||
func (*EarnedRequest) Descriptor() ([]byte, []int) {
|
func (*EarnedRequest) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_9a45fd79b06f3a1b, []int{21}
|
return fileDescriptor_9a45fd79b06f3a1b, []int{25}
|
||||||
}
|
}
|
||||||
func (m *EarnedRequest) XXX_Unmarshal(b []byte) error {
|
func (m *EarnedRequest) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_EarnedRequest.Unmarshal(m, b)
|
return xxx_messageInfo_EarnedRequest.Unmarshal(m, b)
|
||||||
@ -1051,7 +1213,7 @@ func (m *EarnedResponse) Reset() { *m = EarnedResponse{} }
|
|||||||
func (m *EarnedResponse) String() string { return proto.CompactTextString(m) }
|
func (m *EarnedResponse) String() string { return proto.CompactTextString(m) }
|
||||||
func (*EarnedResponse) ProtoMessage() {}
|
func (*EarnedResponse) ProtoMessage() {}
|
||||||
func (*EarnedResponse) Descriptor() ([]byte, []int) {
|
func (*EarnedResponse) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_9a45fd79b06f3a1b, []int{22}
|
return fileDescriptor_9a45fd79b06f3a1b, []int{26}
|
||||||
}
|
}
|
||||||
func (m *EarnedResponse) XXX_Unmarshal(b []byte) error {
|
func (m *EarnedResponse) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_EarnedResponse.Unmarshal(m, b)
|
return xxx_messageInfo_EarnedResponse.Unmarshal(m, b)
|
||||||
@ -1089,7 +1251,7 @@ func (m *EarnedPerSatelliteRequest) Reset() { *m = EarnedPerSatelliteReq
|
|||||||
func (m *EarnedPerSatelliteRequest) String() string { return proto.CompactTextString(m) }
|
func (m *EarnedPerSatelliteRequest) String() string { return proto.CompactTextString(m) }
|
||||||
func (*EarnedPerSatelliteRequest) ProtoMessage() {}
|
func (*EarnedPerSatelliteRequest) ProtoMessage() {}
|
||||||
func (*EarnedPerSatelliteRequest) Descriptor() ([]byte, []int) {
|
func (*EarnedPerSatelliteRequest) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_9a45fd79b06f3a1b, []int{23}
|
return fileDescriptor_9a45fd79b06f3a1b, []int{27}
|
||||||
}
|
}
|
||||||
func (m *EarnedPerSatelliteRequest) XXX_Unmarshal(b []byte) error {
|
func (m *EarnedPerSatelliteRequest) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_EarnedPerSatelliteRequest.Unmarshal(m, b)
|
return xxx_messageInfo_EarnedPerSatelliteRequest.Unmarshal(m, b)
|
||||||
@ -1127,7 +1289,7 @@ func (m *EarnedPerSatelliteResponse) Reset() { *m = EarnedPerSatelliteRe
|
|||||||
func (m *EarnedPerSatelliteResponse) String() string { return proto.CompactTextString(m) }
|
func (m *EarnedPerSatelliteResponse) String() string { return proto.CompactTextString(m) }
|
||||||
func (*EarnedPerSatelliteResponse) ProtoMessage() {}
|
func (*EarnedPerSatelliteResponse) ProtoMessage() {}
|
||||||
func (*EarnedPerSatelliteResponse) Descriptor() ([]byte, []int) {
|
func (*EarnedPerSatelliteResponse) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_9a45fd79b06f3a1b, []int{24}
|
return fileDescriptor_9a45fd79b06f3a1b, []int{28}
|
||||||
}
|
}
|
||||||
func (m *EarnedPerSatelliteResponse) XXX_Unmarshal(b []byte) error {
|
func (m *EarnedPerSatelliteResponse) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_EarnedPerSatelliteResponse.Unmarshal(m, b)
|
return xxx_messageInfo_EarnedPerSatelliteResponse.Unmarshal(m, b)
|
||||||
@ -1166,7 +1328,7 @@ func (m *EarnedSatellite) Reset() { *m = EarnedSatellite{} }
|
|||||||
func (m *EarnedSatellite) String() string { return proto.CompactTextString(m) }
|
func (m *EarnedSatellite) String() string { return proto.CompactTextString(m) }
|
||||||
func (*EarnedSatellite) ProtoMessage() {}
|
func (*EarnedSatellite) ProtoMessage() {}
|
||||||
func (*EarnedSatellite) Descriptor() ([]byte, []int) {
|
func (*EarnedSatellite) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_9a45fd79b06f3a1b, []int{25}
|
return fileDescriptor_9a45fd79b06f3a1b, []int{29}
|
||||||
}
|
}
|
||||||
func (m *EarnedSatellite) XXX_Unmarshal(b []byte) error {
|
func (m *EarnedSatellite) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_EarnedSatellite.Unmarshal(m, b)
|
return xxx_messageInfo_EarnedSatellite.Unmarshal(m, b)
|
||||||
@ -1205,7 +1367,7 @@ func (m *PayoutInfo) Reset() { *m = PayoutInfo{} }
|
|||||||
func (m *PayoutInfo) String() string { return proto.CompactTextString(m) }
|
func (m *PayoutInfo) String() string { return proto.CompactTextString(m) }
|
||||||
func (*PayoutInfo) ProtoMessage() {}
|
func (*PayoutInfo) ProtoMessage() {}
|
||||||
func (*PayoutInfo) Descriptor() ([]byte, []int) {
|
func (*PayoutInfo) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_9a45fd79b06f3a1b, []int{26}
|
return fileDescriptor_9a45fd79b06f3a1b, []int{30}
|
||||||
}
|
}
|
||||||
func (m *PayoutInfo) XXX_Unmarshal(b []byte) error {
|
func (m *PayoutInfo) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_PayoutInfo.Unmarshal(m, b)
|
return xxx_messageInfo_PayoutInfo.Unmarshal(m, b)
|
||||||
@ -1264,6 +1426,10 @@ func init() {
|
|||||||
proto.RegisterType((*AllSatellitesSummaryResponse)(nil), "multinode.AllSatellitesSummaryResponse")
|
proto.RegisterType((*AllSatellitesSummaryResponse)(nil), "multinode.AllSatellitesSummaryResponse")
|
||||||
proto.RegisterType((*AllSatellitesPeriodSummaryRequest)(nil), "multinode.AllSatellitesPeriodSummaryRequest")
|
proto.RegisterType((*AllSatellitesPeriodSummaryRequest)(nil), "multinode.AllSatellitesPeriodSummaryRequest")
|
||||||
proto.RegisterType((*AllSatellitesPeriodSummaryResponse)(nil), "multinode.AllSatellitesPeriodSummaryResponse")
|
proto.RegisterType((*AllSatellitesPeriodSummaryResponse)(nil), "multinode.AllSatellitesPeriodSummaryResponse")
|
||||||
|
proto.RegisterType((*SatelliteSummaryRequest)(nil), "multinode.SatelliteSummaryRequest")
|
||||||
|
proto.RegisterType((*SatelliteSummaryResponse)(nil), "multinode.SatelliteSummaryResponse")
|
||||||
|
proto.RegisterType((*SatellitePeriodSummaryRequest)(nil), "multinode.SatellitePeriodSummaryRequest")
|
||||||
|
proto.RegisterType((*SatellitePeriodSummaryResponse)(nil), "multinode.SatellitePeriodSummaryResponse")
|
||||||
proto.RegisterType((*EarnedRequest)(nil), "multinode.EarnedRequest")
|
proto.RegisterType((*EarnedRequest)(nil), "multinode.EarnedRequest")
|
||||||
proto.RegisterType((*EarnedResponse)(nil), "multinode.EarnedResponse")
|
proto.RegisterType((*EarnedResponse)(nil), "multinode.EarnedResponse")
|
||||||
proto.RegisterType((*EarnedPerSatelliteRequest)(nil), "multinode.EarnedPerSatelliteRequest")
|
proto.RegisterType((*EarnedPerSatelliteRequest)(nil), "multinode.EarnedPerSatelliteRequest")
|
||||||
@ -1275,75 +1441,80 @@ func init() {
|
|||||||
func init() { proto.RegisterFile("multinode.proto", fileDescriptor_9a45fd79b06f3a1b) }
|
func init() { proto.RegisterFile("multinode.proto", fileDescriptor_9a45fd79b06f3a1b) }
|
||||||
|
|
||||||
var fileDescriptor_9a45fd79b06f3a1b = []byte{
|
var fileDescriptor_9a45fd79b06f3a1b = []byte{
|
||||||
// 1120 bytes of a gzipped FileDescriptorProto
|
// 1199 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x5f, 0x73, 0xdb, 0x44,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xdd, 0x72, 0xdb, 0x44,
|
||||||
0x10, 0x47, 0x4d, 0x22, 0xd7, 0xeb, 0x34, 0x7f, 0x8e, 0x00, 0x8a, 0xea, 0xd4, 0x41, 0x0d, 0x4d,
|
0x14, 0x46, 0x4d, 0x22, 0xd7, 0xc7, 0x69, 0x7e, 0x96, 0xd0, 0x2a, 0xaa, 0x13, 0x07, 0x25, 0x34,
|
||||||
0xa0, 0xad, 0x03, 0x2e, 0xc3, 0x0c, 0x33, 0x30, 0x43, 0x42, 0x52, 0x9a, 0x21, 0xa1, 0xa9, 0x1c,
|
0x29, 0x6d, 0x1d, 0x70, 0x19, 0x66, 0x98, 0x81, 0x19, 0x12, 0x92, 0xd2, 0x0c, 0x09, 0x4d, 0x95,
|
||||||
0xfa, 0x50, 0x98, 0x7a, 0x2e, 0xd6, 0xc5, 0x16, 0x95, 0x75, 0x42, 0x77, 0x0a, 0xf8, 0x0b, 0xf0,
|
0xd0, 0x61, 0x0a, 0x53, 0xcf, 0xc6, 0xda, 0x38, 0xa2, 0xb2, 0x56, 0x68, 0xd7, 0x81, 0xdc, 0x70,
|
||||||
0xcc, 0x37, 0x62, 0x78, 0x61, 0xf8, 0x0c, 0x3c, 0x94, 0x2f, 0xc0, 0x3b, 0xaf, 0xcc, 0xfd, 0xb1,
|
0xc9, 0x35, 0x0f, 0xc0, 0x83, 0x70, 0xc7, 0x70, 0xc3, 0xf0, 0x0c, 0x5c, 0x94, 0xc7, 0xe0, 0x96,
|
||||||
0x2c, 0xdb, 0xb2, 0x93, 0xb1, 0x67, 0x78, 0xbb, 0xdb, 0xfd, 0xed, 0x6f, 0xf7, 0x76, 0xef, 0xf6,
|
0xd9, 0x1f, 0xcb, 0xb2, 0x2d, 0x2b, 0xc1, 0x66, 0xb8, 0xdb, 0x3d, 0x3f, 0xdf, 0x39, 0xbb, 0xe7,
|
||||||
0x16, 0x96, 0x3b, 0x49, 0xc0, 0xfd, 0x90, 0x7a, 0xa4, 0x1a, 0xc5, 0x94, 0x53, 0x54, 0x4c, 0x05,
|
0xe8, 0xec, 0x27, 0x98, 0x6d, 0xb5, 0x03, 0xee, 0x87, 0xd4, 0x23, 0xd5, 0x28, 0xa6, 0x9c, 0xa2,
|
||||||
0x36, 0xb4, 0x68, 0x8b, 0x2a, 0xb1, 0x5d, 0x69, 0x51, 0xda, 0x0a, 0xc8, 0xae, 0xdc, 0x9d, 0x27,
|
0x62, 0x22, 0xb0, 0xa1, 0x49, 0x9b, 0x54, 0x89, 0xed, 0x4a, 0x93, 0xd2, 0x66, 0x40, 0x36, 0xe5,
|
||||||
0x17, 0xbb, 0xdc, 0xef, 0x10, 0xc6, 0x71, 0x27, 0x52, 0x00, 0x67, 0x07, 0x6e, 0xb9, 0xe4, 0xc7,
|
0xee, 0xa4, 0x7d, 0xba, 0xc9, 0xfd, 0x16, 0x61, 0x1c, 0xb7, 0x22, 0x65, 0xe0, 0x6c, 0xc0, 0x0d,
|
||||||
0x84, 0x30, 0xfe, 0x84, 0x60, 0x8f, 0xc4, 0xe8, 0x1d, 0x28, 0xe0, 0xc8, 0x6f, 0xbc, 0x22, 0x5d,
|
0x97, 0x7c, 0xdb, 0x26, 0x8c, 0x3f, 0x26, 0xd8, 0x23, 0x31, 0xba, 0x05, 0x05, 0x1c, 0xf9, 0xf5,
|
||||||
0xcb, 0xd8, 0x34, 0x76, 0x16, 0x5d, 0x13, 0x47, 0xfe, 0xd7, 0xa4, 0xeb, 0x1c, 0xc0, 0xca, 0x81,
|
0x97, 0xe4, 0xc2, 0x32, 0x56, 0x8c, 0x8d, 0x69, 0xd7, 0xc4, 0x91, 0xff, 0x19, 0xb9, 0x70, 0x76,
|
||||||
0xcf, 0x5e, 0xd5, 0x23, 0xdc, 0x24, 0xda, 0x04, 0x7d, 0x08, 0x66, 0x5b, 0x9a, 0x49, 0x6c, 0xa9,
|
0x60, 0x6e, 0xc7, 0x67, 0x2f, 0x8f, 0x22, 0xdc, 0x20, 0xda, 0x05, 0xbd, 0x03, 0xe6, 0x99, 0x74,
|
||||||
0x66, 0x55, 0xfb, 0x71, 0x0d, 0xd0, 0xba, 0x1a, 0xe7, 0xfc, 0x66, 0xc0, 0x6a, 0x86, 0x86, 0x45,
|
0x93, 0xb6, 0xa5, 0x9a, 0x55, 0xed, 0xe6, 0xd5, 0x03, 0xeb, 0x6a, 0x3b, 0xe7, 0x57, 0x03, 0xe6,
|
||||||
0x34, 0x64, 0x04, 0x95, 0xa1, 0x88, 0x83, 0x80, 0x36, 0x31, 0x27, 0x9e, 0xa4, 0x9a, 0x73, 0xfb,
|
0x53, 0x30, 0x2c, 0xa2, 0x21, 0x23, 0xa8, 0x0c, 0x45, 0x1c, 0x04, 0xb4, 0x81, 0x39, 0xf1, 0x24,
|
||||||
0x02, 0x54, 0x81, 0x52, 0xc2, 0x88, 0xd7, 0x88, 0x7c, 0xd2, 0x24, 0xcc, 0xba, 0x21, 0xf5, 0x20,
|
0xd4, 0x84, 0xdb, 0x15, 0xa0, 0x0a, 0x94, 0xda, 0x8c, 0x78, 0xf5, 0xc8, 0x27, 0x0d, 0xc2, 0xac,
|
||||||
0x44, 0xa7, 0x52, 0x82, 0x36, 0x40, 0xee, 0x1a, 0x3c, 0xc6, 0xac, 0x6d, 0xcd, 0x29, 0x7b, 0x21,
|
0x6b, 0x52, 0x0f, 0x42, 0x74, 0x28, 0x25, 0x68, 0x09, 0xe4, 0xae, 0xce, 0x63, 0xcc, 0xce, 0xac,
|
||||||
0x39, 0x13, 0x02, 0x84, 0x60, 0xfe, 0x22, 0x26, 0xc4, 0x9a, 0x97, 0x0a, 0xb9, 0x96, 0x1e, 0x2f,
|
0x09, 0xe5, 0x2f, 0x24, 0xc7, 0x42, 0x80, 0x10, 0x4c, 0x9e, 0xc6, 0x84, 0x58, 0x93, 0x52, 0x21,
|
||||||
0xb1, 0x1f, 0xe0, 0xf3, 0x80, 0x58, 0x0b, 0xda, 0x63, 0x4f, 0x80, 0x6c, 0xb8, 0x49, 0x2f, 0x49,
|
0xd7, 0x32, 0xe2, 0x39, 0xf6, 0x03, 0x7c, 0x12, 0x10, 0x6b, 0x4a, 0x47, 0xec, 0x08, 0x90, 0x0d,
|
||||||
0x2c, 0x28, 0x2c, 0x53, 0x2a, 0xd3, 0xbd, 0x73, 0x0a, 0xe5, 0x7d, 0x1c, 0x7a, 0x3f, 0xf9, 0x1e,
|
0xd7, 0xe9, 0x39, 0x89, 0x05, 0x84, 0x65, 0x4a, 0x65, 0xb2, 0x77, 0x0e, 0xa1, 0xbc, 0x8d, 0x43,
|
||||||
0x6f, 0x9f, 0xd0, 0x90, 0xb7, 0xeb, 0x49, 0xa7, 0x83, 0xe3, 0xee, 0xf4, 0x39, 0x79, 0x04, 0x1b,
|
0xef, 0x3b, 0xdf, 0xe3, 0x67, 0x07, 0x34, 0xe4, 0x67, 0x47, 0xed, 0x56, 0x0b, 0xc7, 0x17, 0xa3,
|
||||||
0x63, 0x18, 0x75, 0x7a, 0x10, 0xcc, 0xcb, 0x50, 0x54, 0x66, 0xe4, 0xda, 0xd9, 0x87, 0xa5, 0xe7,
|
0xdf, 0xc9, 0x43, 0x58, 0x1a, 0x82, 0xa8, 0xaf, 0x07, 0xc1, 0xa4, 0x4c, 0x45, 0xdd, 0x8c, 0x5c,
|
||||||
0x24, 0x66, 0x3e, 0x0d, 0xa7, 0x77, 0x7c, 0x1f, 0x96, 0x53, 0x0e, 0xed, 0xca, 0x82, 0xc2, 0xa5,
|
0x3b, 0xdb, 0x30, 0xf3, 0x8c, 0xc4, 0xcc, 0xa7, 0xe1, 0xe8, 0x81, 0xef, 0xc1, 0x6c, 0x82, 0xa1,
|
||||||
0x12, 0x49, 0x96, 0xa2, 0xdb, 0xdb, 0x3a, 0x8f, 0x01, 0x1d, 0x63, 0xc6, 0xbf, 0xa4, 0x21, 0xc7,
|
0x43, 0x59, 0x50, 0x38, 0x57, 0x22, 0x89, 0x52, 0x74, 0x3b, 0x5b, 0xe7, 0x11, 0xa0, 0x7d, 0xcc,
|
||||||
0x4d, 0x3e, 0xbd, 0xd3, 0x97, 0xf0, 0xe6, 0x00, 0x8f, 0x76, 0xfc, 0x15, 0x2c, 0x06, 0x98, 0xf1,
|
0xf8, 0x27, 0x34, 0xe4, 0xb8, 0xc1, 0x47, 0x0f, 0xfa, 0x02, 0x5e, 0xef, 0xc1, 0xd1, 0x81, 0x3f,
|
||||||
0x46, 0x53, 0xc9, 0x35, 0x9d, 0x5d, 0x55, 0x17, 0xb8, 0xda, 0xbb, 0xc0, 0xd5, 0xb3, 0xde, 0x05,
|
0x85, 0xe9, 0x00, 0x33, 0x5e, 0x6f, 0x28, 0xb9, 0x86, 0xb3, 0xab, 0xaa, 0x81, 0xab, 0x9d, 0x06,
|
||||||
0xde, 0xbf, 0xf9, 0xe7, 0xeb, 0xca, 0x1b, 0xbf, 0xfe, 0x5d, 0x31, 0xdc, 0x52, 0xd0, 0x27, 0x74,
|
0xae, 0x1e, 0x77, 0x1a, 0x78, 0xfb, 0xfa, 0x1f, 0xaf, 0x2a, 0xaf, 0xfd, 0xf4, 0x57, 0xc5, 0x70,
|
||||||
0x7e, 0x86, 0x55, 0x97, 0x44, 0x09, 0xc7, 0x7c, 0x96, 0xdc, 0xa0, 0x8f, 0x60, 0x91, 0x61, 0x4e,
|
0x4b, 0x41, 0x17, 0xd0, 0xf9, 0x1e, 0xe6, 0x5d, 0x12, 0xb5, 0x39, 0xe6, 0xe3, 0xdc, 0x0d, 0x7a,
|
||||||
0x82, 0xc0, 0xe7, 0xa4, 0xe1, 0x7b, 0xf2, 0xd6, 0x2d, 0xee, 0x2f, 0x09, 0x9f, 0x7f, 0xbd, 0xae,
|
0x17, 0xa6, 0x19, 0xe6, 0x24, 0x08, 0x7c, 0x4e, 0xea, 0xbe, 0x27, 0xbb, 0x6e, 0x7a, 0x7b, 0x46,
|
||||||
0x98, 0xdf, 0x50, 0x8f, 0x1c, 0x1d, 0xb8, 0xa5, 0x14, 0x73, 0xe4, 0x39, 0xff, 0x1a, 0x80, 0xb2,
|
0xc4, 0xfc, 0xf3, 0x55, 0xc5, 0xfc, 0x9c, 0x7a, 0x64, 0x6f, 0xc7, 0x2d, 0x25, 0x36, 0x7b, 0x9e,
|
||||||
0xae, 0xf5, 0xc9, 0x3e, 0x03, 0x93, 0x86, 0x81, 0x1f, 0x12, 0xed, 0x7b, 0x6b, 0xc0, 0xf7, 0x30,
|
0xf3, 0xb7, 0x01, 0x28, 0x1d, 0x5a, 0x9f, 0xec, 0x43, 0x30, 0x69, 0x18, 0xf8, 0x21, 0xd1, 0xb1,
|
||||||
0xbc, 0xfa, 0x54, 0x62, 0x5d, 0x6d, 0x83, 0x3e, 0x85, 0x05, 0x9c, 0x78, 0x3e, 0x97, 0x01, 0x94,
|
0xd7, 0x7a, 0x62, 0xf7, 0x9b, 0x57, 0x9f, 0x48, 0x5b, 0x57, 0xfb, 0xa0, 0x0f, 0x60, 0x0a, 0xb7,
|
||||||
0x6a, 0x77, 0x27, 0x1b, 0xef, 0x09, 0xa8, 0xab, 0x2c, 0xec, 0x3b, 0x60, 0x2a, 0x32, 0xb4, 0x06,
|
0x3d, 0x9f, 0xcb, 0x04, 0x4a, 0xb5, 0xd5, 0x7c, 0xe7, 0x2d, 0x61, 0xea, 0x2a, 0x0f, 0x7b, 0x19,
|
||||||
0x0b, 0xac, 0x49, 0x63, 0x15, 0x81, 0xe1, 0xaa, 0x8d, 0xfd, 0x04, 0x16, 0x24, 0x3e, 0x5f, 0x8d,
|
0x4c, 0x05, 0x86, 0x16, 0x60, 0x8a, 0x35, 0x68, 0xac, 0x32, 0x30, 0x5c, 0xb5, 0xb1, 0x1f, 0xc3,
|
||||||
0xde, 0x87, 0x15, 0x96, 0xb0, 0x88, 0x84, 0xa2, 0xfc, 0x0d, 0x05, 0xb8, 0x21, 0x01, 0xcb, 0x7d,
|
0x94, 0xb4, 0xcf, 0x56, 0xa3, 0xbb, 0x30, 0xc7, 0xda, 0x2c, 0x22, 0xa1, 0x28, 0x7f, 0x5d, 0x19,
|
||||||
0x79, 0x5d, 0x88, 0x9d, 0x63, 0xb0, 0xce, 0xe2, 0x84, 0x71, 0xe2, 0xd5, 0x7b, 0xf9, 0x60, 0xd3,
|
0x5c, 0x93, 0x06, 0xb3, 0x5d, 0xf9, 0x91, 0x10, 0x3b, 0xfb, 0x60, 0x1d, 0xc7, 0x6d, 0xc6, 0x89,
|
||||||
0xdf, 0x90, 0x3f, 0x0c, 0x58, 0xcf, 0xa1, 0xd3, 0xe9, 0xfc, 0x0e, 0x10, 0x57, 0xca, 0x46, 0x9a,
|
0x77, 0xd4, 0xb9, 0x0f, 0x36, 0x7a, 0x87, 0xfc, 0x6e, 0xc0, 0x62, 0x06, 0x9c, 0xbe, 0xce, 0xaf,
|
||||||
0x7c, 0x66, 0x19, 0x9b, 0x73, 0x3b, 0xa5, 0xda, 0x83, 0x0c, 0xf7, 0x58, 0x86, 0xaa, 0xa8, 0xdd,
|
0x00, 0x71, 0xa5, 0xac, 0x27, 0x97, 0xcf, 0x2c, 0x63, 0x65, 0x62, 0xa3, 0x54, 0xbb, 0x9f, 0xc2,
|
||||||
0xb7, 0xee, 0xb1, 0xbb, 0xca, 0x87, 0x21, 0xf6, 0x31, 0x14, 0xb4, 0x16, 0x6d, 0x43, 0x41, 0xf0,
|
0x1e, 0x8a, 0x50, 0x15, 0xb5, 0xfb, 0xc2, 0xdd, 0x77, 0xe7, 0x79, 0xbf, 0x89, 0xbd, 0x0f, 0x05,
|
||||||
0x88, 0xda, 0x1b, 0xb9, 0xb5, 0x37, 0x85, 0xfa, 0xc8, 0x13, 0x4f, 0x06, 0x7b, 0x5e, 0x4c, 0x98,
|
0xad, 0x45, 0xeb, 0x50, 0x10, 0x38, 0xa2, 0xf6, 0x46, 0x66, 0xed, 0x4d, 0xa1, 0xde, 0xf3, 0xc4,
|
||||||
0x6a, 0x4d, 0x45, 0xb7, 0xb7, 0x75, 0x7e, 0x31, 0xa0, 0x72, 0xc8, 0xb8, 0xdf, 0x11, 0x6d, 0xec,
|
0x27, 0x83, 0x3d, 0x2f, 0x26, 0x4c, 0x8d, 0xa6, 0xa2, 0xdb, 0xd9, 0x3a, 0x3f, 0x1a, 0x50, 0xd9,
|
||||||
0x14, 0x77, 0x69, 0xc2, 0x53, 0x5f, 0xff, 0xeb, 0xcd, 0x7c, 0x06, 0x9b, 0xe3, 0xe3, 0xd0, 0x79,
|
0x65, 0xdc, 0x6f, 0x89, 0x31, 0x76, 0x88, 0x2f, 0x68, 0x9b, 0x27, 0xb1, 0xfe, 0xd7, 0xce, 0x7c,
|
||||||
0x7d, 0x08, 0x88, 0xf4, 0x30, 0x0d, 0x82, 0xe3, 0xd0, 0x0f, 0x5b, 0x4c, 0xb7, 0x9c, 0xd5, 0x54,
|
0x0a, 0x2b, 0xc3, 0xf3, 0xd0, 0xf7, 0xfa, 0x00, 0x10, 0xe9, 0xd8, 0xd4, 0x09, 0x8e, 0x43, 0x3f,
|
||||||
0x73, 0xa8, 0x15, 0xce, 0x53, 0xb8, 0x3d, 0x44, 0x79, 0x46, 0x39, 0x0e, 0xa6, 0xaf, 0xfa, 0x09,
|
0x6c, 0x32, 0x3d, 0x72, 0xe6, 0x13, 0xcd, 0xae, 0x56, 0x38, 0x4f, 0xe0, 0x76, 0x1f, 0xe4, 0x31,
|
||||||
0x94, 0xf3, 0x09, 0xa7, 0x8e, 0x6f, 0x2f, 0x08, 0xfa, 0xa5, 0x9d, 0xb9, 0x4b, 0x3f, 0x87, 0x72,
|
0xe5, 0x38, 0x18, 0xbd, 0xea, 0x07, 0x50, 0xce, 0x06, 0x1c, 0x39, 0xbf, 0xad, 0x20, 0xe8, 0x96,
|
||||||
0x3e, 0xa1, 0x8e, 0xef, 0x13, 0x28, 0x45, 0x32, 0xec, 0x86, 0x1f, 0x5e, 0x50, 0x4d, 0xfb, 0x56,
|
0x76, 0xec, 0x29, 0xfd, 0x0c, 0xca, 0xd9, 0x80, 0x3a, 0xbf, 0xf7, 0xa1, 0x14, 0xc9, 0xb4, 0xeb,
|
||||||
0x86, 0x56, 0x1d, 0xea, 0x28, 0xbc, 0xa0, 0x2e, 0x44, 0xe9, 0xda, 0xe9, 0xc0, 0xbb, 0x03, 0xbc,
|
0x7e, 0x78, 0x4a, 0x35, 0xec, 0x1b, 0x29, 0x58, 0x75, 0xa8, 0xbd, 0xf0, 0x94, 0xba, 0x10, 0x25,
|
||||||
0xa7, 0x24, 0xf6, 0xa9, 0x37, 0x6b, 0xb8, 0xe8, 0x6d, 0x30, 0x23, 0xc9, 0xa4, 0x2f, 0xa5, 0xde,
|
0x6b, 0xa7, 0x05, 0x6f, 0xf6, 0xe0, 0x1e, 0x92, 0xd8, 0xa7, 0xde, 0xb8, 0xe9, 0xa2, 0x9b, 0x60,
|
||||||
0x39, 0xdf, 0x83, 0x33, 0xc9, 0xdd, 0x8c, 0x87, 0xd9, 0x83, 0x5b, 0xa2, 0x02, 0xc4, 0x9b, 0x3e,
|
0x46, 0x12, 0x49, 0x37, 0xa5, 0xde, 0x39, 0x5f, 0x83, 0x93, 0x17, 0x6e, 0xcc, 0xc3, 0xfc, 0x00,
|
||||||
0xcf, 0xf7, 0x60, 0xa9, 0x47, 0xa1, 0x83, 0x59, 0x83, 0x05, 0x2e, 0xae, 0x82, 0x2e, 0xb6, 0xda,
|
0xb7, 0x12, 0xe8, 0xb1, 0x8f, 0x30, 0x42, 0xa3, 0xbb, 0x60, 0x0d, 0xc6, 0x1f, 0xf3, 0x4c, 0x3f,
|
||||||
0x38, 0x27, 0xb0, 0xae, 0x70, 0xa7, 0x24, 0x9e, 0xfd, 0x55, 0x39, 0x4d, 0xb0, 0xf3, 0xe8, 0x74,
|
0x1b, 0xb0, 0x94, 0x80, 0xfe, 0x47, 0xd5, 0xf9, 0xf7, 0x47, 0x4b, 0x15, 0x74, 0xa2, 0xa7, 0xa0,
|
||||||
0x08, 0x87, 0xb0, 0x42, 0xa4, 0xb6, 0xdf, 0x73, 0x74, 0xcb, 0xb1, 0x33, 0xcc, 0x8a, 0xa0, 0x6f,
|
0x5f, 0xc2, 0xf2, 0xb0, 0xec, 0xc6, 0x3c, 0xf8, 0x16, 0xdc, 0x10, 0x9f, 0x13, 0xf1, 0x46, 0xff,
|
||||||
0xbd, 0x4c, 0x06, 0x05, 0xce, 0x0b, 0x58, 0x1e, 0xc2, 0xe4, 0x1f, 0x6e, 0x9a, 0x37, 0xfe, 0x31,
|
0x68, 0xee, 0xc0, 0x4c, 0x07, 0x42, 0x27, 0xb3, 0x00, 0x53, 0x5c, 0x7c, 0xd7, 0xfa, 0xcb, 0x55,
|
||||||
0x40, 0xbf, 0x28, 0x62, 0x64, 0x68, 0x93, 0x20, 0x1d, 0x19, 0xc4, 0x5a, 0xc8, 0x22, 0xac, 0xc9,
|
0x1b, 0xe7, 0x00, 0x16, 0x95, 0xdd, 0x21, 0x89, 0xc7, 0x1f, 0x91, 0x4e, 0x03, 0xec, 0x2c, 0x38,
|
||||||
0xe6, 0x5c, 0xb9, 0xae, 0x3d, 0x83, 0x42, 0x9d, 0xd3, 0x18, 0xb7, 0x08, 0x7a, 0x0c, 0xc5, 0x74,
|
0x9d, 0xc2, 0x2e, 0xcc, 0x11, 0xa9, 0xed, 0x3e, 0x20, 0xfa, 0xfd, 0xb0, 0x53, 0xc8, 0x0a, 0xa0,
|
||||||
0x32, 0x43, 0xb7, 0x33, 0xc7, 0x1a, 0x1e, 0xfb, 0xec, 0x72, 0xbe, 0x52, 0xe5, 0xaa, 0x16, 0x42,
|
0xeb, 0x3d, 0x4b, 0x7a, 0x05, 0xce, 0x73, 0x98, 0xed, 0xb3, 0xc9, 0x3e, 0xdc, 0x28, 0x7d, 0xfc,
|
||||||
0x31, 0x1d, 0x67, 0x10, 0x86, 0xc5, 0xec, 0x48, 0x83, 0xb6, 0x33, 0xa6, 0x93, 0xc6, 0x28, 0x7b,
|
0x1e, 0x40, 0xb7, 0x28, 0x82, 0xff, 0x9d, 0x91, 0x20, 0xe1, 0x7f, 0x62, 0x2d, 0x64, 0x11, 0xd6,
|
||||||
0xe7, 0x6a, 0xa0, 0xf6, 0xf7, 0xfb, 0x0d, 0x98, 0x17, 0x09, 0x41, 0x5f, 0x40, 0x41, 0x8f, 0x33,
|
0x60, 0x13, 0xae, 0x5c, 0xd7, 0x9e, 0x42, 0xe1, 0x88, 0xd3, 0x18, 0x37, 0x09, 0x7a, 0x04, 0xc5,
|
||||||
0x68, 0x3d, 0x63, 0x3d, 0x38, 0x26, 0xd9, 0x76, 0x9e, 0x4a, 0x97, 0xf9, 0x18, 0x4a, 0x99, 0xd9,
|
0x84, 0x66, 0xa3, 0xdb, 0xa9, 0x63, 0xf5, 0x73, 0x78, 0xbb, 0x9c, 0xad, 0x54, 0x77, 0x55, 0x0b,
|
||||||
0x04, 0x6d, 0x64, 0xa0, 0xa3, 0xb3, 0x8f, 0x7d, 0x67, 0x9c, 0x5a, 0xb3, 0x1d, 0x01, 0xf4, 0xbf,
|
0xa1, 0x98, 0x70, 0x53, 0x84, 0x61, 0x3a, 0xcd, 0x4f, 0xd1, 0x7a, 0xca, 0x35, 0x8f, 0x13, 0xdb,
|
||||||
0x68, 0x54, 0x1e, 0xf3, 0x73, 0x2b, 0xae, 0x8d, 0x89, 0xff, 0x3a, 0x7a, 0x09, 0xab, 0x23, 0xff,
|
0x1b, 0x97, 0x1b, 0xea, 0x78, 0xbf, 0x5d, 0x83, 0x49, 0x71, 0x21, 0xe8, 0x63, 0x28, 0x68, 0x6e,
|
||||||
0x19, 0xba, 0x3b, 0xf9, 0xb7, 0x53, 0xc4, 0x5b, 0xd7, 0xf9, 0x12, 0x6b, 0xff, 0xcc, 0x83, 0xa9,
|
0x8a, 0x16, 0x53, 0xde, 0xbd, 0x9c, 0xd7, 0xb6, 0xb3, 0x54, 0xba, 0xcc, 0xfb, 0x50, 0x4a, 0x11,
|
||||||
0x6e, 0x0f, 0x6a, 0xc1, 0x5a, 0x5e, 0x9f, 0x43, 0xf7, 0x32, 0x44, 0x13, 0x3a, 0xab, 0xbd, 0x7d,
|
0x4d, 0xb4, 0x94, 0x32, 0x1d, 0x24, 0xb2, 0xf6, 0xf2, 0x30, 0xb5, 0x46, 0xdb, 0x03, 0xe8, 0xf2,
|
||||||
0x25, 0x4e, 0x9f, 0xa9, 0x0b, 0xf6, 0xf8, 0x4e, 0x84, 0x1e, 0x8c, 0xa3, 0xc9, 0xeb, 0x8f, 0xf6,
|
0x2d, 0x54, 0x1e, 0x42, 0xc3, 0x14, 0xd6, 0x52, 0x2e, 0x49, 0x43, 0x2f, 0x60, 0x7e, 0x80, 0x9c,
|
||||||
0xc3, 0x6b, 0xa2, 0xb5, 0xeb, 0xcf, 0xc1, 0x54, 0xef, 0x10, 0x59, 0x23, 0xcf, 0xb7, 0x47, 0xb9,
|
0xa0, 0xd5, 0x7c, 0xea, 0xa2, 0x80, 0xd7, 0xae, 0xc2, 0x6f, 0x6a, 0xbf, 0x98, 0x60, 0xaa, 0xee,
|
||||||
0x9e, 0xa3, 0xd1, 0xe6, 0x18, 0xd0, 0x68, 0xaf, 0x40, 0x5b, 0x23, 0x06, 0x39, 0x9d, 0xc9, 0x7e,
|
0x41, 0x4d, 0x58, 0xc8, 0x7a, 0xb4, 0xd0, 0x9d, 0x14, 0x50, 0xce, 0x33, 0x69, 0xaf, 0x5f, 0x6a,
|
||||||
0xef, 0x0a, 0x94, 0x76, 0xc1, 0xc0, 0x1a, 0xf7, 0x63, 0xa3, 0x0f, 0xb2, 0x14, 0x93, 0xc7, 0x0b,
|
0xa7, 0xcf, 0x74, 0x01, 0xf6, 0xf0, 0x67, 0x05, 0xdd, 0x1f, 0x06, 0x93, 0x35, 0x4e, 0xed, 0x07,
|
||||||
0xfb, 0xfe, 0xb5, 0xb0, 0xda, 0x69, 0x0b, 0xd6, 0xf2, 0xbe, 0xe0, 0x81, 0xd2, 0x4f, 0xf8, 0xf4,
|
0x57, 0xb4, 0x4e, 0x08, 0xe1, 0x5c, 0xff, 0xcc, 0x47, 0x4e, 0x0a, 0x62, 0xc8, 0x83, 0x64, 0xaf,
|
||||||
0x07, 0x4a, 0x3f, 0xe9, 0x2f, 0xdf, 0xdf, 0x7a, 0xe1, 0x30, 0x4e, 0xe3, 0x1f, 0xaa, 0x3e, 0xdd,
|
0xe6, 0xda, 0x68, 0xf0, 0x16, 0xdc, 0xcc, 0x9e, 0xae, 0x68, 0x23, 0xcb, 0x3d, 0xf3, 0x3c, 0x77,
|
||||||
0x95, 0x8b, 0xdd, 0x28, 0xf6, 0x2f, 0x31, 0x27, 0xbb, 0x29, 0x41, 0x74, 0x7e, 0x6e, 0xca, 0xa1,
|
0xaf, 0x60, 0xa9, 0xc3, 0x7d, 0x04, 0xa6, 0x9a, 0x29, 0xc8, 0x1a, 0x18, 0x45, 0x1d, 0xb8, 0xc5,
|
||||||
0xff, 0xd1, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe2, 0x80, 0x59, 0xb0, 0xed, 0x0e, 0x00, 0x00,
|
0x0c, 0x8d, 0x76, 0xc7, 0x80, 0x06, 0xe7, 0x1e, 0x5a, 0x1b, 0x70, 0xc8, 0x98, 0xb2, 0xf6, 0x5b,
|
||||||
|
0x97, 0x58, 0xe9, 0x10, 0x0c, 0xac, 0x61, 0x54, 0x12, 0xbd, 0x9d, 0x86, 0xc8, 0xe7, 0xbd, 0xf6,
|
||||||
|
0xbd, 0x2b, 0xd9, 0xea, 0xa0, 0x4d, 0x58, 0xc8, 0xe2, 0x86, 0x3d, 0x6d, 0x9c, 0xc3, 0x46, 0x7b,
|
||||||
|
0xda, 0x38, 0x8f, 0x64, 0x6e, 0xaf, 0x3d, 0x77, 0x18, 0xa7, 0xf1, 0x37, 0x55, 0x9f, 0x6e, 0xca,
|
||||||
|
0xc5, 0x66, 0x14, 0xfb, 0xe7, 0x98, 0x93, 0xcd, 0x04, 0x20, 0x3a, 0x39, 0x31, 0xe5, 0xdf, 0xe8,
|
||||||
|
0xc3, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x44, 0x72, 0xb4, 0x3b, 0x86, 0x11, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
@ -99,6 +99,8 @@ message TrustedSatellitesResponse {
|
|||||||
service Payout {
|
service Payout {
|
||||||
rpc AllSatellitesSummary(AllSatellitesSummaryRequest) returns (AllSatellitesSummaryResponse);
|
rpc AllSatellitesSummary(AllSatellitesSummaryRequest) returns (AllSatellitesSummaryResponse);
|
||||||
rpc AllSatellitesPeriodSummary(AllSatellitesPeriodSummaryRequest) returns (AllSatellitesPeriodSummaryResponse);
|
rpc AllSatellitesPeriodSummary(AllSatellitesPeriodSummaryRequest) returns (AllSatellitesPeriodSummaryResponse);
|
||||||
|
rpc SatelliteSummary(SatelliteSummaryRequest) returns (SatelliteSummaryResponse);
|
||||||
|
rpc SatellitePeriodSummary(SatellitePeriodSummaryRequest) returns (SatellitePeriodSummaryResponse);
|
||||||
rpc Earned(EarnedRequest) returns (EarnedResponse);
|
rpc Earned(EarnedRequest) returns (EarnedResponse);
|
||||||
rpc EarnedPerSatellite(EarnedPerSatelliteRequest) returns (EarnedPerSatelliteResponse);
|
rpc EarnedPerSatellite(EarnedPerSatelliteRequest) returns (EarnedPerSatelliteResponse);
|
||||||
rpc EstimatedPayoutSatellite(EstimatedPayoutSatelliteRequest) returns (EstimatedPayoutSatelliteResponse);
|
rpc EstimatedPayoutSatellite(EstimatedPayoutSatelliteRequest) returns (EstimatedPayoutSatelliteResponse);
|
||||||
@ -109,12 +111,15 @@ message EstimatedPayoutSatelliteRequest {
|
|||||||
RequestHeader header = 1;
|
RequestHeader header = 1;
|
||||||
bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false];
|
bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false];
|
||||||
}
|
}
|
||||||
|
|
||||||
message EstimatedPayoutSatelliteResponse {
|
message EstimatedPayoutSatelliteResponse {
|
||||||
int64 estimated_earnings = 1;
|
int64 estimated_earnings = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
message EstimatedPayoutTotalRequest {
|
message EstimatedPayoutTotalRequest {
|
||||||
RequestHeader header = 1;
|
RequestHeader header = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
message EstimatedPayoutTotalResponse {
|
message EstimatedPayoutTotalResponse {
|
||||||
int64 estimated_earnings = 1;
|
int64 estimated_earnings = 1;
|
||||||
}
|
}
|
||||||
@ -136,6 +141,25 @@ message AllSatellitesPeriodSummaryResponse {
|
|||||||
PayoutInfo payout_info = 1;
|
PayoutInfo payout_info = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message SatelliteSummaryRequest {
|
||||||
|
RequestHeader header = 1;
|
||||||
|
bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false];
|
||||||
|
}
|
||||||
|
|
||||||
|
message SatelliteSummaryResponse {
|
||||||
|
PayoutInfo payout_info = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SatellitePeriodSummaryRequest {
|
||||||
|
RequestHeader header = 1;
|
||||||
|
bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false];
|
||||||
|
string period = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SatellitePeriodSummaryResponse {
|
||||||
|
PayoutInfo payout_info = 1;
|
||||||
|
}
|
||||||
|
|
||||||
message EarnedRequest {
|
message EarnedRequest {
|
||||||
RequestHeader header = 1;
|
RequestHeader header = 1;
|
||||||
}
|
}
|
||||||
|
@ -389,6 +389,8 @@ type DRPCPayoutClient interface {
|
|||||||
|
|
||||||
AllSatellitesSummary(ctx context.Context, in *AllSatellitesSummaryRequest) (*AllSatellitesSummaryResponse, error)
|
AllSatellitesSummary(ctx context.Context, in *AllSatellitesSummaryRequest) (*AllSatellitesSummaryResponse, error)
|
||||||
AllSatellitesPeriodSummary(ctx context.Context, in *AllSatellitesPeriodSummaryRequest) (*AllSatellitesPeriodSummaryResponse, error)
|
AllSatellitesPeriodSummary(ctx context.Context, in *AllSatellitesPeriodSummaryRequest) (*AllSatellitesPeriodSummaryResponse, error)
|
||||||
|
SatelliteSummary(ctx context.Context, in *SatelliteSummaryRequest) (*SatelliteSummaryResponse, error)
|
||||||
|
SatellitePeriodSummary(ctx context.Context, in *SatellitePeriodSummaryRequest) (*SatellitePeriodSummaryResponse, error)
|
||||||
Earned(ctx context.Context, in *EarnedRequest) (*EarnedResponse, error)
|
Earned(ctx context.Context, in *EarnedRequest) (*EarnedResponse, error)
|
||||||
EarnedPerSatellite(ctx context.Context, in *EarnedPerSatelliteRequest) (*EarnedPerSatelliteResponse, error)
|
EarnedPerSatellite(ctx context.Context, in *EarnedPerSatelliteRequest) (*EarnedPerSatelliteResponse, error)
|
||||||
EstimatedPayoutSatellite(ctx context.Context, in *EstimatedPayoutSatelliteRequest) (*EstimatedPayoutSatelliteResponse, error)
|
EstimatedPayoutSatellite(ctx context.Context, in *EstimatedPayoutSatelliteRequest) (*EstimatedPayoutSatelliteResponse, error)
|
||||||
@ -423,6 +425,24 @@ func (c *drpcPayoutClient) AllSatellitesPeriodSummary(ctx context.Context, in *A
|
|||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *drpcPayoutClient) SatelliteSummary(ctx context.Context, in *SatelliteSummaryRequest) (*SatelliteSummaryResponse, error) {
|
||||||
|
out := new(SatelliteSummaryResponse)
|
||||||
|
err := c.cc.Invoke(ctx, "/multinode.Payout/SatelliteSummary", drpcEncoding_File_multinode_proto{}, in, out)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *drpcPayoutClient) SatellitePeriodSummary(ctx context.Context, in *SatellitePeriodSummaryRequest) (*SatellitePeriodSummaryResponse, error) {
|
||||||
|
out := new(SatellitePeriodSummaryResponse)
|
||||||
|
err := c.cc.Invoke(ctx, "/multinode.Payout/SatellitePeriodSummary", drpcEncoding_File_multinode_proto{}, in, out)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (c *drpcPayoutClient) Earned(ctx context.Context, in *EarnedRequest) (*EarnedResponse, error) {
|
func (c *drpcPayoutClient) Earned(ctx context.Context, in *EarnedRequest) (*EarnedResponse, error) {
|
||||||
out := new(EarnedResponse)
|
out := new(EarnedResponse)
|
||||||
err := c.cc.Invoke(ctx, "/multinode.Payout/Earned", drpcEncoding_File_multinode_proto{}, in, out)
|
err := c.cc.Invoke(ctx, "/multinode.Payout/Earned", drpcEncoding_File_multinode_proto{}, in, out)
|
||||||
@ -462,6 +482,8 @@ func (c *drpcPayoutClient) EstimatedPayoutTotal(ctx context.Context, in *Estimat
|
|||||||
type DRPCPayoutServer interface {
|
type DRPCPayoutServer interface {
|
||||||
AllSatellitesSummary(context.Context, *AllSatellitesSummaryRequest) (*AllSatellitesSummaryResponse, error)
|
AllSatellitesSummary(context.Context, *AllSatellitesSummaryRequest) (*AllSatellitesSummaryResponse, error)
|
||||||
AllSatellitesPeriodSummary(context.Context, *AllSatellitesPeriodSummaryRequest) (*AllSatellitesPeriodSummaryResponse, error)
|
AllSatellitesPeriodSummary(context.Context, *AllSatellitesPeriodSummaryRequest) (*AllSatellitesPeriodSummaryResponse, error)
|
||||||
|
SatelliteSummary(context.Context, *SatelliteSummaryRequest) (*SatelliteSummaryResponse, error)
|
||||||
|
SatellitePeriodSummary(context.Context, *SatellitePeriodSummaryRequest) (*SatellitePeriodSummaryResponse, error)
|
||||||
Earned(context.Context, *EarnedRequest) (*EarnedResponse, error)
|
Earned(context.Context, *EarnedRequest) (*EarnedResponse, error)
|
||||||
EarnedPerSatellite(context.Context, *EarnedPerSatelliteRequest) (*EarnedPerSatelliteResponse, error)
|
EarnedPerSatellite(context.Context, *EarnedPerSatelliteRequest) (*EarnedPerSatelliteResponse, error)
|
||||||
EstimatedPayoutSatellite(context.Context, *EstimatedPayoutSatelliteRequest) (*EstimatedPayoutSatelliteResponse, error)
|
EstimatedPayoutSatellite(context.Context, *EstimatedPayoutSatelliteRequest) (*EstimatedPayoutSatelliteResponse, error)
|
||||||
@ -478,6 +500,14 @@ func (s *DRPCPayoutUnimplementedServer) AllSatellitesPeriodSummary(context.Conte
|
|||||||
return nil, drpcerr.WithCode(errors.New("Unimplemented"), 12)
|
return nil, drpcerr.WithCode(errors.New("Unimplemented"), 12)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *DRPCPayoutUnimplementedServer) SatelliteSummary(context.Context, *SatelliteSummaryRequest) (*SatelliteSummaryResponse, error) {
|
||||||
|
return nil, drpcerr.WithCode(errors.New("Unimplemented"), 12)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *DRPCPayoutUnimplementedServer) SatellitePeriodSummary(context.Context, *SatellitePeriodSummaryRequest) (*SatellitePeriodSummaryResponse, error) {
|
||||||
|
return nil, drpcerr.WithCode(errors.New("Unimplemented"), 12)
|
||||||
|
}
|
||||||
|
|
||||||
func (s *DRPCPayoutUnimplementedServer) Earned(context.Context, *EarnedRequest) (*EarnedResponse, error) {
|
func (s *DRPCPayoutUnimplementedServer) Earned(context.Context, *EarnedRequest) (*EarnedResponse, error) {
|
||||||
return nil, drpcerr.WithCode(errors.New("Unimplemented"), 12)
|
return nil, drpcerr.WithCode(errors.New("Unimplemented"), 12)
|
||||||
}
|
}
|
||||||
@ -496,7 +526,7 @@ func (s *DRPCPayoutUnimplementedServer) EstimatedPayoutTotal(context.Context, *E
|
|||||||
|
|
||||||
type DRPCPayoutDescription struct{}
|
type DRPCPayoutDescription struct{}
|
||||||
|
|
||||||
func (DRPCPayoutDescription) NumMethods() int { return 6 }
|
func (DRPCPayoutDescription) NumMethods() int { return 8 }
|
||||||
|
|
||||||
func (DRPCPayoutDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) {
|
func (DRPCPayoutDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) {
|
||||||
switch n {
|
switch n {
|
||||||
@ -519,6 +549,24 @@ func (DRPCPayoutDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver
|
|||||||
)
|
)
|
||||||
}, DRPCPayoutServer.AllSatellitesPeriodSummary, true
|
}, DRPCPayoutServer.AllSatellitesPeriodSummary, true
|
||||||
case 2:
|
case 2:
|
||||||
|
return "/multinode.Payout/SatelliteSummary", drpcEncoding_File_multinode_proto{},
|
||||||
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
|
return srv.(DRPCPayoutServer).
|
||||||
|
SatelliteSummary(
|
||||||
|
ctx,
|
||||||
|
in1.(*SatelliteSummaryRequest),
|
||||||
|
)
|
||||||
|
}, DRPCPayoutServer.SatelliteSummary, true
|
||||||
|
case 3:
|
||||||
|
return "/multinode.Payout/SatellitePeriodSummary", drpcEncoding_File_multinode_proto{},
|
||||||
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
|
return srv.(DRPCPayoutServer).
|
||||||
|
SatellitePeriodSummary(
|
||||||
|
ctx,
|
||||||
|
in1.(*SatellitePeriodSummaryRequest),
|
||||||
|
)
|
||||||
|
}, DRPCPayoutServer.SatellitePeriodSummary, true
|
||||||
|
case 4:
|
||||||
return "/multinode.Payout/Earned", drpcEncoding_File_multinode_proto{},
|
return "/multinode.Payout/Earned", drpcEncoding_File_multinode_proto{},
|
||||||
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
return srv.(DRPCPayoutServer).
|
return srv.(DRPCPayoutServer).
|
||||||
@ -527,7 +575,7 @@ func (DRPCPayoutDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver
|
|||||||
in1.(*EarnedRequest),
|
in1.(*EarnedRequest),
|
||||||
)
|
)
|
||||||
}, DRPCPayoutServer.Earned, true
|
}, DRPCPayoutServer.Earned, true
|
||||||
case 3:
|
case 5:
|
||||||
return "/multinode.Payout/EarnedPerSatellite", drpcEncoding_File_multinode_proto{},
|
return "/multinode.Payout/EarnedPerSatellite", drpcEncoding_File_multinode_proto{},
|
||||||
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
return srv.(DRPCPayoutServer).
|
return srv.(DRPCPayoutServer).
|
||||||
@ -536,7 +584,7 @@ func (DRPCPayoutDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver
|
|||||||
in1.(*EarnedPerSatelliteRequest),
|
in1.(*EarnedPerSatelliteRequest),
|
||||||
)
|
)
|
||||||
}, DRPCPayoutServer.EarnedPerSatellite, true
|
}, DRPCPayoutServer.EarnedPerSatellite, true
|
||||||
case 4:
|
case 6:
|
||||||
return "/multinode.Payout/EstimatedPayoutSatellite", drpcEncoding_File_multinode_proto{},
|
return "/multinode.Payout/EstimatedPayoutSatellite", drpcEncoding_File_multinode_proto{},
|
||||||
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
return srv.(DRPCPayoutServer).
|
return srv.(DRPCPayoutServer).
|
||||||
@ -545,7 +593,7 @@ func (DRPCPayoutDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver
|
|||||||
in1.(*EstimatedPayoutSatelliteRequest),
|
in1.(*EstimatedPayoutSatelliteRequest),
|
||||||
)
|
)
|
||||||
}, DRPCPayoutServer.EstimatedPayoutSatellite, true
|
}, DRPCPayoutServer.EstimatedPayoutSatellite, true
|
||||||
case 5:
|
case 7:
|
||||||
return "/multinode.Payout/EstimatedPayoutTotal", drpcEncoding_File_multinode_proto{},
|
return "/multinode.Payout/EstimatedPayoutTotal", drpcEncoding_File_multinode_proto{},
|
||||||
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
return srv.(DRPCPayoutServer).
|
return srv.(DRPCPayoutServer).
|
||||||
@ -595,6 +643,38 @@ func (x *drpcPayout_AllSatellitesPeriodSummaryStream) SendAndClose(m *AllSatelli
|
|||||||
return x.CloseSend()
|
return x.CloseSend()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type DRPCPayout_SatelliteSummaryStream interface {
|
||||||
|
drpc.Stream
|
||||||
|
SendAndClose(*SatelliteSummaryResponse) error
|
||||||
|
}
|
||||||
|
|
||||||
|
type drpcPayout_SatelliteSummaryStream struct {
|
||||||
|
drpc.Stream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *drpcPayout_SatelliteSummaryStream) SendAndClose(m *SatelliteSummaryResponse) error {
|
||||||
|
if err := x.MsgSend(m, drpcEncoding_File_multinode_proto{}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return x.CloseSend()
|
||||||
|
}
|
||||||
|
|
||||||
|
type DRPCPayout_SatellitePeriodSummaryStream interface {
|
||||||
|
drpc.Stream
|
||||||
|
SendAndClose(*SatellitePeriodSummaryResponse) error
|
||||||
|
}
|
||||||
|
|
||||||
|
type drpcPayout_SatellitePeriodSummaryStream struct {
|
||||||
|
drpc.Stream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *drpcPayout_SatellitePeriodSummaryStream) SendAndClose(m *SatellitePeriodSummaryResponse) error {
|
||||||
|
if err := x.MsgSend(m, drpcEncoding_File_multinode_proto{}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return x.CloseSend()
|
||||||
|
}
|
||||||
|
|
||||||
type DRPCPayout_EarnedStream interface {
|
type DRPCPayout_EarnedStream interface {
|
||||||
drpc.Stream
|
drpc.Stream
|
||||||
SendAndClose(*EarnedResponse) error
|
SendAndClose(*EarnedResponse) error
|
||||||
|
@ -172,3 +172,39 @@ func (payout *PayoutEndpoint) AllSatellitesPeriodSummary(ctx context.Context, re
|
|||||||
|
|
||||||
return &multinodepb.AllSatellitesPeriodSummaryResponse{PayoutInfo: &multinodepb.PayoutInfo{Held: totalHeld, Paid: totalPaid}}, nil
|
return &multinodepb.AllSatellitesPeriodSummaryResponse{PayoutInfo: &multinodepb.PayoutInfo{Held: totalHeld, Paid: totalPaid}}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SatelliteSummary returns satellite all time payout summary.
|
||||||
|
func (payout *PayoutEndpoint) SatelliteSummary(ctx context.Context, req *multinodepb.SatelliteSummaryRequest) (_ *multinodepb.SatelliteSummaryResponse, err error) {
|
||||||
|
defer mon.Task()(&ctx)(&err)
|
||||||
|
|
||||||
|
if err = authenticate(ctx, payout.apiKeys, req.GetHeader()); err != nil {
|
||||||
|
return nil, rpcstatus.Wrap(rpcstatus.Unauthenticated, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var totalPaid, totalHeld int64
|
||||||
|
|
||||||
|
totalPaid, totalHeld, err = payout.db.GetSatelliteSummary(ctx, req.SatelliteId)
|
||||||
|
if err != nil {
|
||||||
|
return &multinodepb.SatelliteSummaryResponse{}, rpcstatus.Wrap(rpcstatus.Internal, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &multinodepb.SatelliteSummaryResponse{PayoutInfo: &multinodepb.PayoutInfo{Held: totalHeld, Paid: totalPaid}}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SatellitePeriodSummary returns satellite period payout summary.
|
||||||
|
func (payout *PayoutEndpoint) SatellitePeriodSummary(ctx context.Context, req *multinodepb.SatellitePeriodSummaryRequest) (_ *multinodepb.SatellitePeriodSummaryResponse, err error) {
|
||||||
|
defer mon.Task()(&ctx)(&err)
|
||||||
|
|
||||||
|
if err = authenticate(ctx, payout.apiKeys, req.GetHeader()); err != nil {
|
||||||
|
return nil, rpcstatus.Wrap(rpcstatus.Unauthenticated, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var totalPaid, totalHeld int64
|
||||||
|
|
||||||
|
totalPaid, totalHeld, err = payout.db.GetSatellitePeriodSummary(ctx, req.SatelliteId, req.Period)
|
||||||
|
if err != nil {
|
||||||
|
return &multinodepb.SatellitePeriodSummaryResponse{}, rpcstatus.Wrap(rpcstatus.Internal, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &multinodepb.SatellitePeriodSummaryResponse{PayoutInfo: &multinodepb.PayoutInfo{Held: totalHeld, Paid: totalPaid}}, nil
|
||||||
|
}
|
||||||
|
@ -16,7 +16,6 @@ import (
|
|||||||
"storj.io/common/testcontext"
|
"storj.io/common/testcontext"
|
||||||
"storj.io/common/testrand"
|
"storj.io/common/testrand"
|
||||||
"storj.io/storj/private/multinodepb"
|
"storj.io/storj/private/multinodepb"
|
||||||
"storj.io/storj/private/testplanet"
|
|
||||||
"storj.io/storj/storagenode"
|
"storj.io/storj/storagenode"
|
||||||
"storj.io/storj/storagenode/apikeys"
|
"storj.io/storj/storagenode/apikeys"
|
||||||
"storj.io/storj/storagenode/multinode"
|
"storj.io/storj/storagenode/multinode"
|
||||||
@ -49,14 +48,26 @@ var (
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestEarnedPerSatellite(t *testing.T) {
|
func TestPayoutsEndpointSummary(t *testing.T) {
|
||||||
testplanet.Run(t, testplanet.Config{
|
storagenodedbtest.Run(t, func(ctx *testcontext.Context, t *testing.T, db storagenode.DB) {
|
||||||
StorageNodeCount: 1,
|
|
||||||
}, func(t *testing.T, ctx *testcontext.Context, planet *testplanet.Planet) {
|
|
||||||
log := zaptest.NewLogger(t)
|
log := zaptest.NewLogger(t)
|
||||||
service := apikeys.NewService(planet.StorageNodes[0].DB.APIKeys())
|
satelliteID := testrand.NodeID()
|
||||||
estimatedPayoutsService := estimatedpayouts.NewService(planet.StorageNodes[0].DB.Bandwidth(), planet.StorageNodes[0].DB.Reputation(), planet.StorageNodes[0].DB.StorageUsage(), planet.StorageNodes[0].DB.Pricing(), planet.StorageNodes[0].DB.Satellites(), &trust.Pool{})
|
apikeydb := db.APIKeys()
|
||||||
endpoint := multinode.NewPayoutEndpoint(log, service, estimatedPayoutsService, planet.StorageNodes[0].DB.Payout())
|
payoutdb := db.Payout()
|
||||||
|
service := apikeys.NewService(apikeydb)
|
||||||
|
|
||||||
|
// Initialize a trust pool
|
||||||
|
poolConfig := trust.Config{
|
||||||
|
CachePath: ctx.File("trust-cache.json"),
|
||||||
|
}
|
||||||
|
poolConfig.Sources = append(poolConfig.Sources, &trust.StaticURLSource{URL: trust.SatelliteURL{ID: satelliteID}})
|
||||||
|
|
||||||
|
trustPool, err := trust.NewPool(zaptest.NewLogger(t), trust.Dialer(rpc.Dialer{}), poolConfig)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NoError(t, trustPool.Refresh(ctx))
|
||||||
|
|
||||||
|
estimatedPayoutsService := estimatedpayouts.NewService(db.Bandwidth(), db.Reputation(), db.StorageUsage(), db.Pricing(), db.Satellites(), trustPool)
|
||||||
|
endpoint := multinode.NewPayoutEndpoint(log, service, estimatedPayoutsService, db.Payout())
|
||||||
|
|
||||||
id := testrand.NodeID()
|
id := testrand.NodeID()
|
||||||
id2 := testrand.NodeID()
|
id2 := testrand.NodeID()
|
||||||
@ -64,7 +75,7 @@ func TestEarnedPerSatellite(t *testing.T) {
|
|||||||
var amount int64 = 200
|
var amount int64 = 200
|
||||||
var amount2 int64 = 150
|
var amount2 int64 = 150
|
||||||
|
|
||||||
err := planet.StorageNodes[0].DB.Payout().StorePayStub(ctx, payouts.PayStub{
|
err = payoutdb.StorePayStub(ctx, payouts.PayStub{
|
||||||
SatelliteID: id,
|
SatelliteID: id,
|
||||||
Held: amount,
|
Held: amount,
|
||||||
Paid: amount,
|
Paid: amount,
|
||||||
@ -72,7 +83,7 @@ func TestEarnedPerSatellite(t *testing.T) {
|
|||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
err = planet.StorageNodes[0].DB.Payout().StorePayStub(ctx, payouts.PayStub{
|
err = payoutdb.StorePayStub(ctx, payouts.PayStub{
|
||||||
SatelliteID: id2,
|
SatelliteID: id2,
|
||||||
Held: amount2,
|
Held: amount2,
|
||||||
Paid: amount2,
|
Paid: amount2,
|
||||||
@ -100,10 +111,28 @@ func TestEarnedPerSatellite(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, response2.PayoutInfo.Paid, amount+amount2)
|
require.Equal(t, response2.PayoutInfo.Paid, amount+amount2)
|
||||||
require.Equal(t, response2.PayoutInfo.Held, amount+amount2)
|
require.Equal(t, response2.PayoutInfo.Held, amount+amount2)
|
||||||
|
|
||||||
|
response3, err := endpoint.SatellitePeriodSummary(ctx, &multinodepb.SatellitePeriodSummaryRequest{
|
||||||
|
Header: &multinodepb.RequestHeader{
|
||||||
|
ApiKey: key.Secret[:],
|
||||||
|
}, SatelliteId: id2, Period: "2020-11",
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, response3.PayoutInfo.Paid, amount2)
|
||||||
|
require.Equal(t, response3.PayoutInfo.Held, amount2)
|
||||||
|
|
||||||
|
response4, err := endpoint.SatelliteSummary(ctx, &multinodepb.SatelliteSummaryRequest{
|
||||||
|
Header: &multinodepb.RequestHeader{
|
||||||
|
ApiKey: key.Secret[:],
|
||||||
|
}, SatelliteId: id,
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, response4.PayoutInfo.Paid, amount)
|
||||||
|
require.Equal(t, response4.PayoutInfo.Held, amount)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestStorageNodeApi(t *testing.T) {
|
func TestPayoutsEndpointEstimations(t *testing.T) {
|
||||||
storagenodedbtest.Run(t, func(ctx *testcontext.Context, t *testing.T, db storagenode.DB) {
|
storagenodedbtest.Run(t, func(ctx *testcontext.Context, t *testing.T, db storagenode.DB) {
|
||||||
satelliteID := testrand.NodeID()
|
satelliteID := testrand.NodeID()
|
||||||
bandwidthdb := db.Bandwidth()
|
bandwidthdb := db.Bandwidth()
|
||||||
|
Loading…
Reference in New Issue
Block a user