Skip to content

Commit

Permalink
Implemented subscriber manager (#28)
Browse files Browse the repository at this point in the history
* added subscriber manager

TODO: unsubcribe on disconnection

* Unsubscribe topics on disconnection

* addressed comments

- renamed callback functions
- fixes typos

TODO: handle dupolicate client, add test cases

* typo

* fixed duplicate client issue

added test cases for subscriber manager

* fulfil static check requests

(S1002) should omit comparison to bool constant
(ST1005) error strings should not be capitalized

* Update test cases

* maps cleanup for the garbage collector

* assign capacity in map cleanup

* Use ShrinkingMap instead of map

* Update shrinkingmap

* Fix subscription logic and adapt to new MQTT Broker version (#30)

* Fix test cases

* Move subscription logic to SubscriptionManager

* Adapt TLS Config to new mqtt broker version

* Release 0.10.1

Co-authored-by: muXxer <[email protected]>
  • Loading branch information
Sam Chen and muXxer authored Jul 8, 2022
1 parent f50af38 commit b453e69
Show file tree
Hide file tree
Showing 16 changed files with 708 additions and 200 deletions.
3 changes: 2 additions & 1 deletion config_template.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
"mqtt": {
"bufferSize": 0,
"bufferBlockSize": 0,
"topicCleanupThreshold": 10000,
"topicCleanupThresholdCount": 10000,
"topicCleanupThresholdRatio": 1.0,
"websocket": {
"enabled": true,
"bindAddress": "localhost:1888"
Expand Down
2 changes: 1 addition & 1 deletion core/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ var (
Name = "inx-mqtt"

// Version of the app.
Version = "0.10.0"
Version = "0.10.1"
)

func App() *app.App {
Expand Down
4 changes: 3 additions & 1 deletion core/mqtt/component.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package mqtt

import (
"context"

"go.uber.org/dig"

"github.com/iotaledger/hive.go/app"
Expand Down Expand Up @@ -53,7 +54,8 @@ func provide(c *dig.Container) error {
deps.ShutdownHandler,
mqtt.WithBufferSize(ParamsMQTT.BufferSize),
mqtt.WithBufferBlockSize(ParamsMQTT.BufferBlockSize),
mqtt.WithTopicCleanupThreshold(ParamsMQTT.TopicCleanupThreshold),
mqtt.WithTopicCleanupThresholdCount(ParamsMQTT.TopicCleanupThresholdCount),
mqtt.WithTopicCleanupThresholdRatio(ParamsMQTT.TopicCleanupThresholdRatio),
mqtt.WithWebsocketEnabled(ParamsMQTT.Websocket.Enabled),
mqtt.WithWebsocketBindAddress(ParamsMQTT.Websocket.BindAddress),
mqtt.WithTCPEnabled(ParamsMQTT.TCP.Enabled),
Expand Down
10 changes: 5 additions & 5 deletions core/mqtt/params.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ package mqtt
import "github.com/iotaledger/hive.go/app"

type ParametersMQTT struct {
BufferSize int `default:"0" usage:"the size of the client buffers in bytes"`
BufferBlockSize int `default:"0" usage:"the size per client buffer R/W block in bytes"`
TopicCleanupThreshold int `default:"10000" usage:"the number of deleted topics that trigger a garbage collection of the topic manager"`

Websocket struct {
BufferSize int `default:"0" usage:"the size of the client buffers in bytes"`
BufferBlockSize int `default:"0" usage:"the size per client buffer R/W block in bytes"`
TopicCleanupThresholdCount int `default:"10000" usage:"the number of deleted topics that trigger a garbage collection of the subscription manager"`
TopicCleanupThresholdRatio float32 `default:"1.0" usage:"the ratio of subscribed topics to deleted topics that trigger a garbage collection of the subscription manager"`
Websocket struct {
Enabled bool `default:"true" usage:"whether to enable the websocket connection of the MQTT broker"`
BindAddress string `default:"localhost:1888" usage:"the websocket bind address on which the MQTT broker listens on"`
}
Expand Down
18 changes: 9 additions & 9 deletions core/mqtt/publish.go
Original file line number Diff line number Diff line change
Expand Up @@ -351,9 +351,9 @@ func (s *Server) PublishSpent(ledgerIndex uint32, spent *inx.LedgerSpent) {
s.PublishOnUnlockConditionTopics(topicSpentOutputsByUnlockConditionAndAddress, iotaOutput, payloadFunc)
}

func blockIDFromBlockMetadataTopic(topicName string) iotago.BlockID {
if strings.HasPrefix(topicName, "block-metadata/") && !strings.HasSuffix(topicName, "/referenced") {
blockIDHex := strings.Replace(topicName, "block-metadata/", "", 1)
func blockIDFromBlockMetadataTopic(topic string) iotago.BlockID {
if strings.HasPrefix(topic, "block-metadata/") && !strings.HasSuffix(topic, "/referenced") {
blockIDHex := strings.Replace(topic, "block-metadata/", "", 1)
blockID, err := iotago.BlockIDFromHexString(blockIDHex)
if err != nil {
return iotago.EmptyBlockID()
Expand All @@ -363,9 +363,9 @@ func blockIDFromBlockMetadataTopic(topicName string) iotago.BlockID {
return iotago.EmptyBlockID()
}

func transactionIDFromTransactionsIncludedBlockTopic(topicName string) iotago.TransactionID {
if strings.HasPrefix(topicName, "transactions/") && strings.HasSuffix(topicName, "/included-block") {
transactionIDHex := strings.Replace(topicName, "transactions/", "", 1)
func transactionIDFromTransactionsIncludedBlockTopic(topic string) iotago.TransactionID {
if strings.HasPrefix(topic, "transactions/") && strings.HasSuffix(topic, "/included-block") {
transactionIDHex := strings.Replace(topic, "transactions/", "", 1)
transactionIDHex = strings.Replace(transactionIDHex, "/included-block", "", 1)

decoded, err := iotago.DecodeHex(transactionIDHex)
Expand All @@ -379,9 +379,9 @@ func transactionIDFromTransactionsIncludedBlockTopic(topicName string) iotago.Tr
return emptyTransactionID
}

func outputIDFromOutputsTopic(topicName string) iotago.OutputID {
if strings.HasPrefix(topicName, "outputs/") && !strings.HasPrefix(topicName, "outputs/unlock") {
outputIDHex := strings.Replace(topicName, "outputs/", "", 1)
func outputIDFromOutputsTopic(topic string) iotago.OutputID {
if strings.HasPrefix(topic, "outputs/") && !strings.HasPrefix(topic, "outputs/unlock") {
outputIDHex := strings.Replace(topic, "outputs/", "", 1)
outputID, err := iotago.OutputIDFromHex(outputIDHex)
if err != nil {
return emptyOutputID
Expand Down
26 changes: 20 additions & 6 deletions core/mqtt/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,14 @@ func NewServer(log *logger.Logger,

func (s *Server) Run(ctx context.Context) {
broker, err := mqtt.NewBroker(
func(topicName string) {
s.onSubscribeTopic(ctx, topicName)
}, func(topicName string) {
s.onUnsubscribeTopic(topicName)
func(clientID string) {
s.onClientConnect(clientID)
}, func(clientID string) {
s.onClientDisconnect(clientID)
}, func(clientID string, topic string) {
s.onSubscribeTopic(ctx, clientID, topic)
}, func(clientID string, topic string) {
s.onUnsubscribeTopic(clientID, topic)
},
s.brokerOptions)
if err != nil {
Expand Down Expand Up @@ -123,7 +127,16 @@ func (s *Server) Run(ctx context.Context) {
s.MQTTBroker.Stop()
}

func (s *Server) onSubscribeTopic(ctx context.Context, topic string) {
func (s *Server) onClientConnect(clientID string) {
s.LogDebugf("onClientConnect %s", clientID)
}

func (s *Server) onClientDisconnect(clientID string) {
s.LogDebugf("onClientDisconnect %s", clientID)
}

func (s *Server) onSubscribeTopic(ctx context.Context, clientID string, topic string) {
s.LogDebugf("%s subscribed to %s", clientID, topic)
switch topic {
case topicMilestoneInfoLatest:
go s.publishLatestMilestoneTopic()
Expand Down Expand Up @@ -165,7 +178,8 @@ func (s *Server) onSubscribeTopic(ctx context.Context, topic string) {
}
}

func (s *Server) onUnsubscribeTopic(topic string) {
func (s *Server) onUnsubscribeTopic(clientID string, topic string) {
s.LogDebugf("%s unsubscribed from %s", clientID, topic)
switch topic {
case topicBlocks, topicBlocksTransaction, topicBlocksTransactionTaggedData, topicBlocksTaggedData, topicMilestones:
s.stopListenIfNeeded(grpcListenToBlocks)
Expand Down
16 changes: 10 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@ module github.com/iotaledger/inx-mqtt
go 1.18

require (
github.com/iotaledger/hive.go v0.0.0-20220531132324-8347a155e220
github.com/iotaledger/hive.go/serializer/v2 v2.0.0-20220623193802-86a373581cc1
github.com/iotaledger/hive.go v0.0.0-20220707144500-ae0ecb7af9bf
github.com/iotaledger/hive.go/serializer/v2 v2.0.0-20220707144500-ae0ecb7af9bf
github.com/iotaledger/inx-app v0.0.0-20220705125128-ee367df6181f
github.com/iotaledger/inx/go v0.0.0-20220705124918-775bb201b49e
github.com/iotaledger/iota.go/v3 v3.0.0-20220705124454-acc836567dfb
github.com/labstack/echo/v4 v4.7.2
github.com/mochi-co/mqtt v1.2.2
github.com/mochi-co/mqtt v1.2.3
github.com/pkg/errors v0.9.1
github.com/prometheus/client_golang v1.12.2
github.com/stretchr/testify v1.8.0
go.uber.org/dig v1.14.1
google.golang.org/grpc v1.47.0
)
Expand All @@ -21,6 +22,7 @@ require (
github.com/beorn7/perks v1.0.1 // indirect
github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
github.com/eclipse/paho.mqtt.golang v1.4.1 // indirect
github.com/emirpasic/gods v1.18.1 // indirect
Expand All @@ -34,7 +36,7 @@ require (
github.com/gorilla/websocket v1.5.0 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
github.com/hashicorp/go-version v1.5.0 // indirect
github.com/hashicorp/go-version v1.6.0 // indirect
github.com/iotaledger/iota.go v1.0.0 // indirect
github.com/knadh/koanf v1.4.2 // indirect
github.com/labstack/gommon v0.3.1 // indirect
Expand All @@ -47,6 +49,7 @@ require (
github.com/pasztorpisti/qs v0.0.0-20171216220353-8d6c33ee906c // indirect
github.com/pelletier/go-toml/v2 v2.0.2 // indirect
github.com/petermattis/goid v0.0.0-20220526132513-07eaf5d0b9f4 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.35.0 // indirect
github.com/prometheus/procfs v0.7.3 // indirect
Expand All @@ -61,13 +64,14 @@ require (
go.uber.org/multierr v1.8.0 // indirect
go.uber.org/zap v1.21.0 // indirect
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect
golang.org/x/net v0.0.0-20220630215102-69896b714898 // indirect
golang.org/x/net v0.0.0-20220706163947-c90051bbdb60 // indirect
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f // indirect
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect
google.golang.org/genproto v0.0.0-20220630174209-ad1d48641aa7 // indirect
google.golang.org/genproto v0.0.0-20220707150051-590a5ac7bee1 // indirect
google.golang.org/protobuf v1.28.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
29 changes: 16 additions & 13 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -214,8 +214,8 @@ github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjG
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go-version v1.5.0 h1:O293SZ2Eg+AAYijkVK3jR786Am1bhDEh2GHT0tIVE5E=
github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
Expand All @@ -226,10 +226,10 @@ github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKe
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/iotaledger/hive.go v0.0.0-20220531132324-8347a155e220 h1:QK26nYSwx4oxxj66UtOgEd1q9wrnfMGYkeHE8N91OyQ=
github.com/iotaledger/hive.go v0.0.0-20220531132324-8347a155e220/go.mod h1:qY0Eg2w/r+Ot0KrocMQHrtHzrcYKxDAEf33c6nSd8mI=
github.com/iotaledger/hive.go/serializer/v2 v2.0.0-20220623193802-86a373581cc1 h1:czZvfFN0hGpbbGVZ92FA8cIUlesfKJJRV50qgWEpi+w=
github.com/iotaledger/hive.go/serializer/v2 v2.0.0-20220623193802-86a373581cc1/go.mod h1:7fVUqbLY+iBjCNjFwzbhOyS07OZJFIYJEDNJAItzMw8=
github.com/iotaledger/hive.go v0.0.0-20220707144500-ae0ecb7af9bf h1:OsPjzgYjLMmL4nrOsDcxCaz6TbxLHxEAE68yDyLK42Q=
github.com/iotaledger/hive.go v0.0.0-20220707144500-ae0ecb7af9bf/go.mod h1:qY0Eg2w/r+Ot0KrocMQHrtHzrcYKxDAEf33c6nSd8mI=
github.com/iotaledger/hive.go/serializer/v2 v2.0.0-20220707144500-ae0ecb7af9bf h1:O21flM4Kwj9zWgK/vpfgB6QYQLPN8jg39qXbAxIhjzE=
github.com/iotaledger/hive.go/serializer/v2 v2.0.0-20220707144500-ae0ecb7af9bf/go.mod h1:7fVUqbLY+iBjCNjFwzbhOyS07OZJFIYJEDNJAItzMw8=
github.com/iotaledger/inx-app v0.0.0-20220705125128-ee367df6181f h1:5ELQT8gdPeb4dHRNyJgQBkgjSAxlTiIjMUTwJ9W6EZs=
github.com/iotaledger/inx-app v0.0.0-20220705125128-ee367df6181f/go.mod h1:rWX3XdoGwO8+X0D1iIEo4gPQYS1id55RziuOlXJLqqI=
github.com/iotaledger/inx/go v0.0.0-20220705124918-775bb201b49e h1:C8UvhK3nGrQoSwsngHBM6aRChiShbn3eWwxcmUQZg9w=
Expand Down Expand Up @@ -292,8 +292,8 @@ github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR
github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/mochi-co/mqtt v1.2.2 h1:X/RjFnr//tXTH4fQCpUrpRGnNl9j1I7aPEXfJHhAekY=
github.com/mochi-co/mqtt v1.2.2/go.mod h1:o0lhQFWL8QtR1+8a9JZmbY8FhZ89MF8vGOGHJNFbCB8=
github.com/mochi-co/mqtt v1.2.3 h1:u2sMD0wzK3bltkrL08bjhNleshgBp9L8F7aKdHIwB2I=
github.com/mochi-co/mqtt v1.2.3/go.mod h1:o0lhQFWL8QtR1+8a9JZmbY8FhZ89MF8vGOGHJNFbCB8=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
Expand Down Expand Up @@ -378,13 +378,16 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.7.4 h1:wZRexSlwd7ZXfKINDLsO4r7WBt3gTKONc6K/VesHvHM=
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e h1:IWllFTiDjjLIf2oeKxpIUmtiDV5sn71VgeQgg6vcE7k=
github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e/go.mod h1:d7u6HkTYKSv5m6MCKkOQlHwaShTMl3HjqSGW3XtVhXM=
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
Expand Down Expand Up @@ -497,8 +500,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220630215102-69896b714898 h1:K7wO6V1IrczY9QOQ2WkVpw4JQSwCd52UsxVEirZUfiw=
golang.org/x/net v0.0.0-20220630215102-69896b714898/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20220706163947-c90051bbdb60 h1:8NSylCMxLW4JvserAndSgFL7aPli6A68yf0bYFTcWCM=
golang.org/x/net v0.0.0-20220706163947-c90051bbdb60/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
Expand Down Expand Up @@ -695,8 +698,8 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20220630174209-ad1d48641aa7 h1:q4zUJDd0+knPFB9x20S3vnxzlYNBbt8Yd7zBMVMteeM=
google.golang.org/genproto v0.0.0-20220630174209-ad1d48641aa7/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
google.golang.org/genproto v0.0.0-20220707150051-590a5ac7bee1 h1:9xwvuxWX7vv5abXveMxOhRBUdidfOIq/U4jeZg32tJg=
google.golang.org/genproto v0.0.0-20220707150051-590a5ac7bee1/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
Expand Down
Loading

0 comments on commit b453e69

Please sign in to comment.