From 9eb72cb08d7da09079f1f01fc0aeb5ee99cb71a4 Mon Sep 17 00:00:00 2001 From: Hans Moog <hm@mkjc.net> Date: Fri, 14 Feb 2020 13:40:36 +0100 Subject: [PATCH] Refactor: removed duplicate code --- go.mod | 2 + .../binary/transactionrequester/constants.go | 10 --- .../binary/transactionrequester/events.go | 9 --- .../binary/transactionrequester/options.go | 37 ---------- .../transactionrequester.go | 74 ------------------- 5 files changed, 2 insertions(+), 130 deletions(-) delete mode 100644 packages/binary/transactionrequester/constants.go delete mode 100644 packages/binary/transactionrequester/events.go delete mode 100644 packages/binary/transactionrequester/options.go delete mode 100644 packages/binary/transactionrequester/transactionrequester.go diff --git a/go.mod b/go.mod index 12474aa2..7afa104f 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module github.com/iotaledger/goshimmer go 1.13 require ( + cloud.google.com/go v0.36.0 // indirect github.com/dgraph-io/badger/v2 v2.0.1 github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/dgryski/go-farm v0.0.0-20191112170834-c2139c5d712b // indirect @@ -41,6 +42,7 @@ require ( golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9 // indirect golang.org/x/text v0.3.2 // indirect golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7 // indirect + google.golang.org/appengine v1.4.0 // indirect gopkg.in/ini.v1 v1.51.1 // indirect gopkg.in/yaml.v2 v2.2.7 // indirect ) diff --git a/packages/binary/transactionrequester/constants.go b/packages/binary/transactionrequester/constants.go deleted file mode 100644 index b9f59769..00000000 --- a/packages/binary/transactionrequester/constants.go +++ /dev/null @@ -1,10 +0,0 @@ -package transactionrequester - -import ( - "time" -) - -const ( - DEFAULT_REQUEST_WORKER_COUNT = 1024 - DEFAULT_RETRY_INTERVAL = 10 * time.Second -) diff --git a/packages/binary/transactionrequester/events.go b/packages/binary/transactionrequester/events.go deleted file mode 100644 index e845d790..00000000 --- a/packages/binary/transactionrequester/events.go +++ /dev/null @@ -1,9 +0,0 @@ -package transactionrequester - -import ( - "github.com/iotaledger/hive.go/events" -) - -type Events struct { - SendRequest *events.Event -} diff --git a/packages/binary/transactionrequester/options.go b/packages/binary/transactionrequester/options.go deleted file mode 100644 index 05db5db4..00000000 --- a/packages/binary/transactionrequester/options.go +++ /dev/null @@ -1,37 +0,0 @@ -package transactionrequester - -import ( - "time" -) - -type Options struct { - retryInterval time.Duration - workerCount int -} - -func newOptions(optionalOptions []Option) *Options { - result := &Options{ - retryInterval: 10 * time.Second, - workerCount: DEFAULT_REQUEST_WORKER_COUNT, - } - - for _, optionalOption := range optionalOptions { - optionalOption(result) - } - - return result -} - -type Option func(*Options) - -func RetryInterval(interval time.Duration) Option { - return func(args *Options) { - args.retryInterval = interval - } -} - -func WorkerCount(workerCount int) Option { - return func(args *Options) { - args.workerCount = workerCount - } -} diff --git a/packages/binary/transactionrequester/transactionrequester.go b/packages/binary/transactionrequester/transactionrequester.go deleted file mode 100644 index 6f036e81..00000000 --- a/packages/binary/transactionrequester/transactionrequester.go +++ /dev/null @@ -1,74 +0,0 @@ -package transactionrequester - -import ( - "sync" - "time" - - "github.com/iotaledger/hive.go/async" - "github.com/iotaledger/hive.go/events" - - "github.com/iotaledger/goshimmer/packages/binary/tangle/model/transaction" -) - -type TransactionRequester struct { - scheduledRequests map[transaction.Id]*time.Timer - requestWorker async.NonBlockingWorkerPool - options *Options - Events Events - - scheduledRequestsMutex sync.RWMutex -} - -func New(optionalOptions ...Option) *TransactionRequester { - requester := &TransactionRequester{ - scheduledRequests: make(map[transaction.Id]*time.Timer), - options: newOptions(optionalOptions), - Events: Events{ - SendRequest: events.NewEvent(func(handler interface{}, params ...interface{}) { - handler.(func(transaction.Id))(params[0].(transaction.Id)) - }), - }, - } - - requester.requestWorker.Tune(requester.options.workerCount) - - return requester -} - -func (requester *TransactionRequester) ScheduleRequest(transactionId transaction.Id) { - var retryRequest func(bool) - retryRequest = func(initialRequest bool) { - requester.requestWorker.Submit(func() { - requester.scheduledRequestsMutex.RLock() - if _, requestExists := requester.scheduledRequests[transactionId]; !initialRequest && !requestExists { - requester.scheduledRequestsMutex.RUnlock() - - return - } - requester.scheduledRequestsMutex.RUnlock() - - requester.Events.SendRequest.Trigger(transactionId) - - requester.scheduledRequestsMutex.Lock() - requester.scheduledRequests[transactionId] = time.AfterFunc(requester.options.retryInterval, func() { retryRequest(false) }) - requester.scheduledRequestsMutex.Unlock() - }) - } - - retryRequest(true) -} - -func (requester *TransactionRequester) StopRequest(transactionId transaction.Id) { - requester.scheduledRequestsMutex.RLock() - if timer, timerExists := requester.scheduledRequests[transactionId]; timerExists { - requester.scheduledRequestsMutex.RUnlock() - - timer.Stop() - - requester.scheduledRequestsMutex.Lock() - delete(requester.scheduledRequests, transactionId) - requester.scheduledRequestsMutex.Unlock() - } else { - requester.scheduledRequestsMutex.RUnlock() - } -} -- GitLab